在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/