在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 ++代码的事情,我不必在每个文件中写入吗?
答案 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允许您跨多个文件定义一个类。