跨多个文件在C#中定义类型别名

时间:2011-01-21 22:20:12

标签: c# typedef using

在C ++中,可以很容易地写出以下内容:

#ifdef FAST
typedef Real float;
#endif

#ifdef SLOW
typedef Real double;
#endif

#ifdef SLOWER
typedef Real quad;
#endif

在一些常见的头文件中,我可以简单地编写一个版本的代码,并#define相应的版本来获取不同的二进制文件。

我知道在C#中你可以做类似的事情:

using Real = double;

这样你就可以获得类似于typedef的语义。 但有可能做一些类似于上面的C ++代码的事情,我不必在每个文件中写入吗?

2 个答案:

答案 0 :(得分:6)

如果您希望它使用内置的IL运算符,则不一定 - 您必须按文件执行此操作。但是,如果您不需要(我怀疑您),您可以将其封装在struct中:

public struct Real {
     private readonly REAL_TYPE value;
     public(REAL_TYPE value) { this.value = value; }
     // TODO add lots of operators (add, multiply. etc) here...
}

(其中REAL_TYPE是单个文件中的using别名,声明Real

我的钱,不值得。如果静态操作符的使用速度相对较慢,那么在使用它时,如果它是原位操作则会导致IL操作。

答案 1 :(得分:-3)

最接近的是部分类。 partial classes允许您跨多个文件定义一个类。