我使用了这种方法的框架使用通用方法,而不是方法的参数
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