【问题标题】:Techniques for aliasing in C#?C# 中的别名技术?
【发布时间】: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
  • 我假设你知道“使用别名”...?
  • 我使用“类型别名”(“使用别名”)使代码更容易遵循一致......但是,这听起来像是一个突破性的变化。正在使用的类型的规则(和签名)已更改。
  • 噢! tryingincluding 链接到同一个问题。
  • 看起来是如何不使用别名的好例子。我知道当你有命名空间冲突或只是一个过长类的短名称时使用别名。

标签: c# alias


【解决方案1】:

创建一个名为 Currency 的类并实现(或委托)适当的运算符,然后在需要时更改用于在内部存储数据的类。

【讨论】:

    【解决方案2】:

    您可以像这样使用usingusing Currency = System.Single;,但您必须在每个文件中都这样做。但仍然比在整个应用程序中搜索单个更容易更改。

    【讨论】:

      猜你喜欢
      • 2012-11-23
      • 1970-01-01
      • 2012-12-08
      • 1970-01-01
      • 2011-04-20
      • 1970-01-01
      • 2014-10-22
      • 2010-10-13
      • 2014-06-21
      相关资源
      最近更新 更多