Codeby web-security - новый курс от Codeby Security School

Представляем вашему вниманию новый курс от команды The Codeby - "Тестирование Веб-Приложений на проникновение с нуля". Общая теория, подготовка рабочего окружения, пассивный фаззинг и фингерпринт, Активный фаззинг, Уязвимости, Пост-эксплуатация, Инструментальные средства, Social Engeneering и многое другое. Подробнее ...


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

Эта статья будет полезна начинающим программистам, в ней я расскажу, как определить тип массива в языке 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) — это всего лишь обычная переменная, которая хранит ссылку (адрес) на созданный объект в управляемой куче и с её помощью мы можем управлять созданным массивом.


Paranoid - курс от Codeby Security School

Представляем вашему вниманию курс от команды codeby - "Комплекс мер по защите персональных данных, анонимности в интернете и не только" Подробнее ...


Так как тип 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, а значит именно данного типа будет созданный массив).

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

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


Codeby Market от Сodeby

Мы запустили свой магазин CodebyMarket Equipment for InfoSec. Уже добавили RaspberryAlfa Long-RangeOrange PiArduino и многое другое. Купить Pentesting Devices