В Lua и Javascript вы можете помещать разные типы данных в массив. Bools; Струны; Интс и тому подобное. Но я вижу, что в C # массивы выглядят примерно так:

 string[] keysPressed ={};

Итак ... Можно ли не помещать разные типы данных в массив? Да, я знаю, очевидно, что вы не можете в этой строке. Но есть ли другой способ создать массив, поддерживающий разные вещи?

0
user5387221 30 Дек 2015 в 08:12

5 ответов

Лучший ответ

Вы ищете массив или коллекцию динамических. Для получения дополнительных сведений динамический тип данных MSDN

Dynamic можно использовать так же, как мы это делаем в lua и JS. Это языки с динамической типизацией.

dynamic d1 = 7;
dynamic d2 = "a string";
dynamic d3 = System.DateTime.Today;
dynamic d4 = System.Diagnostics.Process.GetProcesses();

Вот пример использования их в массиве

dynamic[] myObjects = new dynamic[3];
myObjects[0] = 1;
myObjects[1] = "2";
myObjects[3] = "another string";
4
Muhammad Umar Farooq 30 Дек 2015 в 05:26

Вы можете использовать object[] или любую другую коллекцию object s:

List<object> objs = new List<object>();

objs.Add(1);
objs.Add("Str");
objs.Add(DateTime.Now);

Помните, что каждый элемент в этой коллекции - это object, и вам нужно будет преобразовать их, чтобы использовать:

objs[1].Trim() // won't compile. object has no Trim method
((string)objs[1]).Trim() // OK
((string)objs[0]).Trim() // runtime exception, unable to cast

Еще одна важная вещь, о которой вам нужно помнить, - это то, что добавление примитивов в эту коллекцию приводит к бокс .

0
Yeldar Kurmangaliyev 30 Дек 2015 в 05:23

Почему вы не используете динамическую функцию.

 List<dynamic> dynamicList = new List<dynamic>();
 string stringValue = "Akshay";
 int intValue = 1;
 dynamicList.Add(stringValue);
 dynamicList.Add(intValue);

Вы можете использовать коллекцию

 ArrayList array = new ArrayList();
 string stringValue = "Akshay";
 int intValue = 1;
 array.Add(stringValue);
 array.Add(intValue);
0
Akshay Kapoor 30 Дек 2015 в 05:35
  1. массив объектов, однако необходимо помнить, какой тип вы сохранить и привести его к нужному типу при использовании элемента. Можно бросить Исключение во время выполнения.
  2. Кортеж
  3. общая коллекция
0
Jaycee 30 Дек 2015 в 05:26

Вы также можете использовать массив object.

object[] keysPressed ={};
0
Akshey Bhat 30 Дек 2015 в 05:18