为每个元组对象添加描述?

4

我有一个元组:

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

我的问题是:

是否有一种方法(通过///备注或其他方式)来向对象类型添加简短描述?

前三个int's可能让人感到困惑...

我怎么知道item1是指“年龄”而不是“手指数量”?

在此输入图片描述


你的代码无法编译。你传递给Product的第四个参数是int。 - Haris Hasan
转到 F# 并使用记录? ;) - TrueWill
4个回答

12

不行。 Tuple类只是在方法内部使用的,如果你想将数据公开,应该定义一个classstruct,并为每个值定义属性。

但是,如果你想给你的值赋予有意义的名称,可以使用匿名类型。这些类型被限制只能在方法内部使用。

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

匿名类型

编辑: 如果你坚持想要从你的方法返回一个元组,那么我的建议是在方法返回值的文档中解释其结构。

/// <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> 中。


@dougles Ituples也可以用作函数的返回类型 - 所以我不需要在中间创建一个类。我可以写一个函数:public Tuple<int,int> myFunc(){}。 - Royi Namir
1
它们与其他任何类型一样是常规类型,因此它们可以作为返回值。但是,是否应该将它们用作返回值是完全不同的话题。如果该方法是公共方法,则最好使用显式类。 - SWeko
@douglas 我知道这些匿名类型。但是,我不能将var用作函数的返回类型(只能使用dynamic),而我的主要目标是将对象作为函数的返回类型。谢谢:) - Royi Namir
1
这就是为什么我说“有意的”。暴露那些名称不具备自说明性的数据结构被认为是粗心的。这就像定义一个名为MyClass的类,以及名为MyProperty1MyProperty2等的属性一样。 - Douglas
不客气 :-)(除了正确性之外,我曾经遇到过由于时间限制而需要做类似事情的情况。当我后来有时间回去尝试记录我的代码时,我采用了记录具有元组作为参数或返回类型的方法的方法。) - Douglas
当前的编辑器处理文档注释超出了摘要标签。这使得在内部成员中使用文档注释也变得有吸引力。 - tm1

4

不,这是不可能的 - 你无法记录传递的参数。

这是使用元组的一个巨大劣势之一 - 值的含义相当不透明。

我建议编写一个有意义的类/结构体并使用它。


0
我知道这是一个旧帖子,但我认为值得提一下,以防有人不熟悉元组的情况下看到它,现在你可以给元组的字段命名(参见这里)。
我不确定如何在方法的或标签中引用它们,但如果你将名称添加到方法的返回类型中,代码的其他部分也可以使用它们!

0
现在(.NET 6及以上版本),我们可以使用记录(records)来替代元组或动态类型来处理这种情况。
public class Program
{
    private record class Person(string Name, int Age, int Fingers); 
    public static void Main()
    {
        Person a = new("Peter", 36, 10);
    }
}

如果你需要对变量名进行进一步的描述,你也可以为这些记录添加XML代码文档。
另请参阅:在learn.microsoft.com上的记录

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接