Для наборов HashSets (функция .NET 3.5) справляется с задачей достаточно хорошо.
Частичный ответ для кортежей:
- .NET 4.0 обеспечивает [некоторую] поддержку кортежей .
- Более ранние версии C # могут использовать анонимный тип (я думаю, что он был введен в .Net 2.0, 3.0 наверняка со всеми вещами LINQ).
Ни один из этих подходов не так удобен, как с Python; основной недостаток связан с тем, что C # статически типизирован. Однако класс кортежей C # 4.0 имеет фабричные статические методы, которые облегчают создание кортежей (до 8 кортежей, то есть кортежей с 8 членами). Например, можно иметь
var customer1 = Tuple.Create("John", "Smith", 14, 5.33, "202-123-444");
Использование анонимного типа может быть сделано следующим образом. Основным недостатком этого подхода является то, что необходимо явно назвать элементы «кортежа» (хотя это именование может быть неявно «спроецировано», если значения, используемые для инициализации, «спроецированы» из другого объекта.
customer1 = new Customer {
Name = "John",
Surname = "Smith",
NumberOfVisits = 14,
CurrentBalance = 5.33,
PhoneNr = "202-123-444"
};