2011-01-21 17 views
9

在C++中定義一個類型別名,它很容易寫的線沿線的東西:在C#在多個文件

#ifdef FAST 
typedef Real float; 
#endif 

#ifdef SLOW 
typedef Real double; 
#endif 

#ifdef SLOWER 
typedef Real quad; 
#endif 

在一些常見的頭文件,所以我可以簡單的寫一個代碼版本和#定義的適當的版本來獲得不同的二進制文件

我知道在C#中,你可以做線沿線的類似的東西:

using Real = double; 

這樣你可以得到類似的語義類型定義。 但是有可能做類似於上面的C++代碼的東西,我不必在每個單獨的文件中寫入?

+3

o__什麼是「quad」? – Mehrdad 2011-01-21 22:22:01

+0

如果所說的二進制文件是程序集,它聽起來像是依賴注入的潛在候選者。 – Terrance 2011-01-21 22:41:14

+1

@Mehrdad:一個假設的浮點數據類型,其大小是雙精度的兩倍。 – 2011-01-22 01:23:34

回答

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的情況下,如果它在原地就會得到。