【问题标题】:Adding Description to each Tuple object?向每个元组对象添加描述?
【发布时间】:2012-01-22 15:08:07
【问题描述】:

我有一个元组:

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

我的问题:

有什么方法(通过/// remark 或其他方式)为对象类型添加简短描述?

前 3 个 int 的 可能会令人困惑....

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

【问题讨论】:

  • 您的代码无法编译。第四个参数是 int 你正在传递 Product
  • 切换到 F# 并使用记录? ;)

标签: c# .net .net-4.0


【解决方案1】:

没有。 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 中,请将您的说明放在 &lt;summary&gt;

【讨论】:

  • @dougles Ituples 也可以用作函数的返回类型——所以我不需要在中间创建一个类。我可以写一个函数:public Tuple&lt;int,int&gt; myFunc (){}
  • 它们和其他类型一样是常规类型,因此它们可以是返回值。但是,您是否应该 将它们用于返回值,是一个完全不同的话题。如果方法是公共方法,最好使用显式类。
  • @douglas 我知道这些匿名类型。但是,我不能将 var 用作函数的返回类型(仅动态),我的主要目标是将对象作为函数的返回类型。谢谢:)
  • 这就是我说“有意”的原因。公开名称不是自记录的数据结构被认为是草率的。这类似于定义一个名为 MyClass 的类,以及名为 MyProperty1MyProperty2 等的属性。
  • 不客气 :-) (除了正确性,由于时间限制,我遇到过需要做类似事情的情况。当我后来有时间回去尝试记录我的代码时,我使用了记录具有元组作为参数或返回类型的方法的方法。)
【解决方案2】:

不,这是不可能的——你不能记录传入的参数。

这是使用 Tuple 的一大缺点 - 值的含义相当不透明。

我建议用有意义的名称编写一个类/结构并改用它。

【讨论】:

    猜你喜欢
    • 2016-12-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-15
    • 2019-06-04
    • 2016-04-14
    • 1970-01-01
    • 1970-01-01
    • 2019-07-09
    相关资源
    最近更新 更多