【发布时间】:2010-07-15 19:34:42
【问题描述】:
所以在 C++ 中,我已经习惯了能够做到:
typedef int PeerId;
这使我可以使类型更具自记录性,而且还允许我在不更改所有代码的情况下随时使 PeerId 表示不同的类型。如果我愿意,我什至可以把 PeerId 变成一个类。这种可扩展性是我希望在 C# 中拥有的,但是我无法弄清楚如何在 C# 中为“int”创建别名。
我想我可以使用 using 语句,但我相信它只在当前文件中具有作用域,所以这不起作用(别名需要在多个文件之间可访问而无需重新定义)。我也不能从内置类型派生一个类(但通常这是我对引用类型的别名所做的,例如 List 或 Dictionary)。我不确定我能做什么。有什么想法吗?
【问题讨论】:
-
为什么不能从内置类型派生?
-
我只是好奇?有人想要这样做的情况或原因是什么?对不起,如果这听起来很奇怪,我只是不知道你为什么不想使用 int。听起来其他开发人员阅读您的代码会感到困惑。
-
同意,有兴趣阅读这篇文章,但一定是不好的做法
-
这不是不好的做法。当 [a] 数据类型可能改变 [b] 你想隐藏实现细节时使用它(因为它们可能会改变)。
-
在这里寻找指导,我相信给内置类型起别名对于强类型检查很有用。例如,假设我有一个程序将毫秒作为一个 int 字段,将秒作为另一个 int 字段。为毫秒和秒创建 typedef 是确保在没有转换的情况下在两个“类型”之间不发生比较或分配的一种方法。处理这些情况的以 C# 为中心的方法是什么?