.NET中的别名

时间:2011-02-15 20:15:07

标签: .net c#-4.0

是否可以为现有类型创建别名并在整个项目中使用该别名?

例如,创建

CustomerID = System.UInt32

并使用CustomerID作为数据类型?

版本:.NET Framework 4.0

(使用“using”关键字,我们可以创建一个别名,但它没有用,因为它不能跨文件工作。)

还有其他想法吗?

2 个答案:

答案 0 :(得分:4)

我相信这个问题的正确答案是:

不,那是(不幸的是?)不可能。 :(


编辑1:然而,你可以(种类)通过制作你自己的struct来模拟这个,并提供与你的类型的隐式转换想。它并不完全是神奇的,但它可能会起作用,具体取决于具体情况。


编辑2:我以前从未使用过此功能,但type forwarding 可能会有所帮助。但是它只转发到另一个整个组件,所以它可能不适用于简单的情况。

答案 1 :(得分:0)

这似乎不可能。但是,您为什么要这样做呢?

如果您的理由是可读性,请考虑以下事项:

您已经可以使用自己的标识符来表明它是一个customerID。尝试将UInt32重命名为CustomerID时,您实际上正在做的是让它看起来像一个新类型。只有当类型需要其他行为或值时,将其视为“新”类型才有用。如果你是用C ++开发的,那么你可以理解在C#中不允许这样做会导致的约定。您知道UInt32会发生什么。

如果您的理由为变化做好准备

E.g。假设在一段时间后你决定你也想支持负面ID。这应该通过将这种可能的预期行为封装在新类型中来解决。所以不需要重命名。