在C++超載,你可以這樣寫代碼:你爲什麼不能要求運營商在仿製藥
template<class T>
T Add(T lhs, T rhs)
{
return lhs + rhs;
}
但是,你不能做這樣的事情在C#:
public static T Add<T>(T x, T y) where T : operator+
{
return x + y;
}
有任何理由?我知道它可以通過反射來實現(通用的Add
與對象,然後運行類型檢查全部),但這是效率低下,並不能很好地擴展。那麼,爲什麼呢?
這看起來像是一個重複的http://stackoverflow.com/questions/756954/arithmetic-operator-overloading-for-a-generic-class-in-c-sharp – neontapir
@neontapir接受的答案使用反射。我提到我知道可以這樣做,我不想。 –
我認爲在第二段中你的意思是你不能在C#中這樣做,即問題是「爲什麼沒有運算符重載類型約束?」 (我不知道的答案,順便說一句)。 –