Какова цель Кортежа (T1) / Singleton в .NET?

Один из Типов "кортеж" в .net 4 является Одноэлементным Кортежем. Я просто задаюсь вопросом, какова цель этой структуры?

Единственное использование, которое я видел, при использовании в 8 + Кортеж, поскольку это может быть присвоено Тресту, где это на самом деле имеет смысл. Это - это? Или есть ли какая-либо другая цель?

32
задан J... 30 June 2015 в 09:25
поделиться

3 ответа

Вы должны спросить разработчиков BCL, чтобы убедиться в этом, но я подозреваю, что, поскольку в реальном мире существуют кортежи из единиц, авторы .NET Framework хотели обеспечить эквивалентную симметрию в своей реализации.

Кортежи - это .NET-реализация того, что вы бы считали математической концепцией кортежа .

Теперь, когда вы спрашиваете о программировании использования Tuple , я бы также ответил, что существуют языки .NET (например, F #), которые могут использовать Tuple <> для представления таких вещей, как возвращаемые значения из функций. Поскольку в результате функция F #, безусловно, может вернуть кортеж из 1, она добавляет симметрии и согласованности в поведение и восприятие языка.

Ваш пример с 8+ кортежами также, вероятно, законен, поскольку свойство Rest может быть кортежем из 1 для представления «переполнения».

18
ответ дан 27 November 2019 в 21:10
поделиться

Кортежи, среди прочего, автоматически реализуют IStructuralComparable и IStructuralEquatable . Это позволяет сразу же сравнивать и сортировать кортежи. Из статьи Билла Маккарти в выпуске Visual Studio Magazine за декабрь 2009 г., «Типы и кортежи в .NET 4»:

Хотя кортежи могут выглядеть простыми и невзрачными, они обеспечивают строгую типизацию и важное сравнение и равенство функциональность. Кортежи полезны вне границ методов, классов или даже машин.

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

7
ответ дан 27 November 2019 в 21:10
поделиться

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

4
ответ дан 27 November 2019 в 21:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: