在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++代码的某些事情?

最佳答案

如果您希望它使用内置的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进行直接IL操作要慢得多。

关于c# - 跨多个文件在C#中定义类型别名,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4764422/

10-11 23:02