有没有一种方法可以在c#中编写自文档类型?

本文关键字:类型 文档 一种 方法 有没有 | 更新日期: 2023-09-27 18:10:06

如果我有,例如字典:

private Dictionary<int, OrderSummary> _orderSummaries;

在c++中我可能有:

typedef int OrderID;
private Dictionary<OrderID, OrderSummary> _orderSummaries;

显示字典键类型是订单ID。c#中有类似的吗?

有没有一种方法可以在c#中编写自文档类型?

可以使用类型别名,如下所示:

using OrderId = System.Int32;

但是别名只在源文件中有效。每个其他源文件都将看到您的字典为Dictionary<int, OrderSummary>

这类别名主要用于消除具有相同名称的类型之间的歧义,而不是作为typedef的替代品。在我看来,将它用于区分相同名称的类型之外的任何目的都是一种不好的做法,而且实际上会妨碍可读性。

如果你的OrderId确实携带一个特定的和明显的语义含义,我建议创建你自己的值类型封装一个int。

你可以做一个类型别名:using OrderId = System.Int32;这只在源文件中有效,所以它可能不像你想的那样完整的文档…

然而,如果你想从外部记录你的数据结构(字典)的意图,那么我会实现一个包装器类:

public class OrderSummaries
{
  private readonly Dictionary<int, OrderSummary> _orderSummaries;
  public OrderSummary FindOrderSummary(int orderId)
  {
    return _orderSummaries[orderId];
  }
  ...
}

您也可以实现包含单个System.Int32struct:

public struct OrderId
{
  public readonly Int32 Id;
  public OrderId(int id)
  {
    Id = id;
  }
}

使用Dictionary<OrderId, OrderSummary>