我使用了這種方法的框架使用通用方法,而不是方法的參數
public static void Initialize<T>() where T : Game;
和示例代碼,你intialize你這樣的比賽
TargetDevice.Initialize<MyGame>();
我想知道什麼是好處使用初始化的風格
public static void Initialize<T>() where T : Game;
TargetDevice.Initialize<MyGame>();
,而不是
public static void Initialize(Game game);
TargetDevice.Initialize(new MyGame());
初始化方法的泛型是否有我可以讀取的任何名稱?爲什麼我應該選擇一種而不是另一種?
謝謝。
由於您不需要將'Game'傳遞給第一種方法,因此第二種方法需要它,這似乎很奇怪。 'Type'在這裏就足夠了嗎? – 2010-12-11 11:52:54
很明顯,在兩種方法中,MyGame實例都是由TargetDevice初始化的。使用泛型方法的一個可能的好處是用戶不會參考MyGame的實際實例。這可能是這種類型的泛型編程隱藏實際實例的想法嗎? – Emil 2010-12-11 12:04:26
但有/無*實例*與泛型無關;你可以擁有帶/不帶實例的通用版本,帶/不帶實例的非通用版本。這就是爲什麼我討論了傳遞'Type'與通用'T'的區別。 – 2010-12-11 12:15:50