【发布时间】:2011-12-15 21:08:35
【问题描述】:
假设我想使用假设语法在 C# 中创建一个类型的别名:
Currency = float;
然后我离开并创建数千个使用 Currency 类型的文件。
然后我意识到我更喜欢使用 FCL 类型:
Currency = System.Single;
太好了,所有代码仍然有效。
...几个月后...
等等,我遇到了一些奇怪的舍入错误。哦,这就是为什么,System.Single only has 7 digits of precision。最多 15 位数:
Currency = System.Double;
...多年后...
哦,浮点不准确;乘以 $0.0011/unit * 217,384 units 暴露了使用浮点的一些限制。会计师坚决反对“会计违规行为”。没问题:
Currency = System.Decimal;
...多年后...
国际申请?货币代码。嗯。 Thank you CodeProject:
Currency = Money;
...稍后...
哦,模式和实践。让我们混淆一些代码:
Currency = ICurrency;
在所有这些无意义的代码中并没有破坏。
我知道 C# 不支持这种级别的 encapsulation 和我编写的语法的弹性。
但是谁能提出一个可以simulatewhatpeoplehavebeentryingtoaccomplish(includingmyself)的语法?
【问题讨论】:
-
基本上是 C++ / C 中的 typedef
-
我假设你知道“使用别名”...?
-
我使用“类型别名”(“使用别名”)使代码更容易遵循一致......但是,这听起来像是一个突破性的变化。正在使用的类型的规则(和签名)已更改。
-
噢! trying 和 including 链接到同一个问题。
-
看起来是如何不使用别名的好例子。我知道当你有命名空间冲突或只是一个过长类的短名称时使用别名。