Как определить тип массива в языке c#

Как определить тип массива?

Эта статья будет полезна начинающим программистам, в ней я расскажу, как определить тип массива в языке c#. Сразу же скажу, что Вы уже должны знать, что такое массив и хотя бы не много уметь работать с ним.

И так сразу же начнём с простого примера. Предположим, что у нас есть массив, который содержит 3 элемента.

int [] numbers = new int [3] { 1,2,3 };

Здесь не стоит искать подвох, всё написано, верно.

Вопрос: определите, какого типа данный массив?

Думаю тут всё очевидно правильный ответ: тип int.

А теперь рассмотрим следующий пример:

object [] numbers = new int [3] { 1,2,3 };

Опять задам тот же самый вопрос: определите тип данного массива?

Правильный ответ: тип int

$(document).ready(function(){$("#showd").click(function(){$("#hid").show();});});

Если же Вы ответили — тип object и сейчас задаёте себе вопрос почему? То предлагаю Вам сделать простую проверку и убедиться в том, что я Вас не обманул. Собственно она заключается в следующем: если бы данный массив был типа object, то мы могли бы хранить в нём данные абсолютно любого типа, например:

object [] numbers = new int [3] { 1, "Hello", true };

Если Вы сейчас откроете программу Visual Studio, создадите новый проект и добавите данный пример, то сразу же обратите своё внимание на Error List, в нём Вы увидите две ошибки:

ошибки

Это говорит нам о том, что данный массив имеет тип int, а не object, иначе мы бы не увидели данных ошибок. Вы можете убедиться в этом, изменив тип массива с int на object.

object [] numbers = new object [3] { 1, "Hello", true };

Ошибки исчезли.

Поэтому ещё раз хочется напомнить, что массив — сам объект, в данном случае, создается с помощью оператора new, а левая часть (object [] numbers) — это всего лишь обычная переменная, которая хранит ссылку (адрес) на созданный объект в управляемой куче и с её помощью мы можем управлять созданным массивом.

Так как тип object в языке c# является базовым типом или так скажем самым главным, то в данном примере переменная numbers может хранить в себе ссылку на объект абсолютно любого типа. Чтобы в этом убедиться достаточно, изменить тип массива, например на string или boolean.

object [] numbers = new string [3] { "Маша", "Петя", "Саша" };

Как видно никаких ошибок не возникло, а массив, в данном примере, имеет тип string.

2

Одна из причин, почему многие не правильно определяют тип массива, заключается в том, что в языке c sharp появилась возможность использовать короткую запись для создания массивов, которая выглядит следующим образом:

object [] numbers = { 1, "Вася", false};

Новый синтаксис, в данном примере, создает массив типа object, не смотря на то что, здесь опускается оператор new, он всё равно выполняется неявным образом. То есть эта же запись полностью будет выглядеть следующим образом:

object [] numbers = new object [3] { 1, "Вася", false};

При использование короткой записи мы можем опередить тип массива по типу переменной, так как компилятор создаст массив на основе данного типа. (В выше приведенном примере он не сможет создать массив например типа int или char, потому что переменная имеет тип object, а значит именно данного типа будет созданный массив).

На этом всё, надеюсь, статья была Вам полезна.

Читайте также:

One Comment

  1. Эту ошибку допускают многие.

Leave a Reply

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*