我可以這樣做:接口的泛型類型約束?
void MyMethod<T>() where T : class { }
是否有這樣的事?
void MyMethod<T>() where T : interface { }
我不想明確指定接口名稱。
另一種方法是,如果typeof(T).IsInterface
返回false,我可以傳入一個受class
約束的參數,但不會像約束一樣乾淨。
我可以這樣做:接口的泛型類型約束?
void MyMethod<T>() where T : class { }
是否有這樣的事?
void MyMethod<T>() where T : interface { }
我不想明確指定接口名稱。
另一種方法是,如果typeof(T).IsInterface
返回false,我可以傳入一個受class
約束的參數,但不會像約束一樣乾淨。
這沒有意義,因爲它不會導致任何限制。
約束class
表示類型參數必須是引用類型。
那麼什麼interface
沒有明確的接口名稱應該限制?
接口本身只是方法/屬性的聲明,所以約束「某些接口」的字面意思是「有一些聲明」 - 這是無用的。
你知道嗎,你是對的。不能有任何接口的實例,所以沒有什麼會被傳入,只是一個接口。如果我只能刪除這個問題。 – oscilatingcretin
所有接口類型都必須是引用類型。 – Servy
答案是錯誤的:它會將'T'限制爲接口類型。因此'MyMethod
這聽起來像一個[XY問題](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)的解決方案 - 你能展示更多關於你正在嘗試的東西嗎?要通過這樣做來解決? –
這種約束的目的是什麼? –
[我如何將接口用作C#泛型約束?](http://stackoverflow.com/questions/1096568/how-can-i-use-interface-as-ac-sharp-generic-type -constraint) –