2012-01-22 2 views
3

У меня есть кортеж:Добавление описания для каждого объекта Tuple?

var a = new Tuple<int, int, int>(1,2,3); 

Мой вопрос:

есть ли способ (по /// remark или что-то еще), чтобы добавить краткое описание к типам объектов?

первый 3 INT в может сбивать с толку ....

Как я могу знать, что item1 имеет в виду «возраст» и не «Количество пальцев»?

enter image description here

+0

Ваш код не компилируется. Четвертый параметр - это то, что вы передаете. Продукт –

+0

@HarisHasan исправлен. Благодарю. –

+0

Переключиться на F # и использовать записи? ;) – TrueWill

ответ

10

порядка № Tuple класс предназначен только для внутреннего использования в рамках метода; если вы намерены сделать доступными данные публично, вы должны определить class или struct со свойствами для каждого из ваших значений.

Однако, если вы хотите дать значимые имена своим значениям, вместо этого вы можете использовать анонимные типы. Это ограничено (не только предназначено) только для внутреннего использования внутри метода.

var a = new { Name = "ABC", Age = 33, NumberOfFingers = 10 }; 
int age = a.Age; 

Anonymous type

Edit: Если вы убеждены, что вы хотите, чтобы вернуть кортеж из метода, то мое предложение было бы объяснить его структуру в документации для возвращаемого значения вашего метода ,

/// <summary> 
/// Retrieves personal information about the person. 
/// </summary> 
/// <returns> 
/// A tuple containing the following information: 
/// <list type="bullet"> 
/// <item><see cref="Tuple{T1,T2,T3}.Item1"/>: The name of the person.</item> 
/// <item><see cref="Tuple{T1,T2,T3}.Item2"/>: The age of the person.</item> 
/// <item><see cref="Tuple{T1,T2,T3}.Item3"/>: The number of fingers the person has.</item> 
/// </list> 
/// </returns> 
public Tuple<string, int, int> GetPerson() 
{ 
    return Tuple.Create("ABC", 33, 10); 
} 

Если вы хотите, чтобы показать в IntelliSense, поместите ваше объяснение в <summary>.

+0

@dougles Ituples также может использоваться как возвращаемый ТИП функции - поэтому мне не нужно создавать класс посередине. Я могу написать функцию: public tuple myFunc() {} ' –

+1

Они являются обычным типом, как и любой другой, поэтому они могут быть возвратными значениями. Однако, если вы * должны использовать их для возвращаемых значений, это совершенно другая тема. Если метод является общедоступным, лучше использовать явный класс. – SWeko

+0

@douglas Я знаю эти анонимные типы. однако я не могу использовать var как возвращаемый тип функции (только динамический), и моя главная цель - иметь объект как возвращаемый тип функции. Спасибо :) –

4

Нет, это невозможно - вы не можете документировать переданные параметры.

Это один из больших недостатков использования Tuple - смысл значений довольно непрозрачен.

Предлагаю написать класс/структуру с содержательными именами и использовать это вместо этого.

Смежные вопросы