虽然我了解通用类型 <T>
和约束的 where
子句,但我对 Unity Tower Defense 模板中以下代码感到困惑:
public abstract class Singleton<T> : MonoBehaviour where T : Singleton<T>
将类型限制为其本身的目的是什么?
虽然我了解通用类型 <T>
和约束的 where
子句,但我对 Unity Tower Defense 模板中以下代码感到困惑:
public abstract class Singleton<T> : MonoBehaviour where T : Singleton<T>
将类型限制为其本身的目的是什么?
它可以防止你这样做:
public class A
{
}
public class B : Singleton<A>
{
}
你会得到一个编译错误。由于类型约束,你必须写成:
public class A : Singleton<A>
{
}
class B : Singleton<A>
有什么问题呢?这并不会阻止B
成为单例,而且A
也仍然可以是单例——这完全取决于OP问题中未包含的其他细节。 - Daipublic class A:Singleton<A>
,那么您也可以有public class B:Singleton<A>
。 - D Stanley