Несколько значений разных типов в одном ключе

292
23 декабря 2016, 11:31

Я не знаю, как правильно сформулировать вопрос, напишу как есть.

Допустим, я хочу сделать "объект", содержащий в себе несколько строго упорядоченных переменных разных типов данных, значения которых можно было бы изменять. Что-то типа такого:

myObj = int,int, bool, string, string;

Есть ли в сишарпе такой велосипед?

Answer 1

Можно использовать Кортеж:

var myObj = new Tuple<int, int, bool, string, string>(5, 3, true, "text", "string");

или:

var myObj = Tuple.Create(5, 3, true, "text", "string");

Обращаться к компонентам кортежа затем можно так: myObj.Item1, myObj.Item3

Одно из преимуществ использования кортежей - у них "правильно" работает условие эквивалентности "из коробки", т.е:

new Tuple<int, int, bool, string, string>(5, 3, true, "text", "string") == new Tuple<int, int, bool, string, string>(5, 3, true, "text", "string")

вернет true, это полезно, когда вы используете кортежи, например, в качестве ключей словарей

В случае же с отдельным классом, как предлагают ниже, вам придется еще и перегрузить операторы == и !=

Но использовать кортежи стоит осторожно - сильное увлечение ими может значительно снизить читабельность кода!

Answer 2
public class Velosiped
{
  public int a;
  public int b;
  public bool c;
  public string d;
  public string e;
}

Так и знал - тупл, трупл, четверупл. "Какой моральный человек" добровольно такое в продакшен вставит?

READ ALSO
Поочередное нажатие кнопок [требует правки]

Поочередное нажатие кнопок [требует правки]

Как сделать поочередное нажатие кнопок через таймер?

313
Помогите решить, пожалуйста. Язык C# [требует правки]

Помогите решить, пожалуйста. Язык C# [требует правки]

Даны две последовательности целых чиселВ каждой из последовательностей встречаются только различные числа

311
C# необязательный параметр

C# необязательный параметр

Есть например вот такая функция

338
Формула Беллара

Формула Беллара

Здравствуйте, есть формула Беллара которая должна возвращать n-й разряд числа пи в двоичном представлении:

398