C# 无法在C中的泛型约束中使用结构类型#
当我发现一个问题时,我正在玩通用约束。我无法找到它的答案,除了编译时显示的错误提示C# 无法在C中的泛型约束中使用结构类型#,c#,generics,constraints,C#,Generics,Constraints,当我发现一个问题时,我正在玩通用约束。我无法找到它的答案,除了编译时显示的错误提示 struct MyStruct { public void Get() { } } class MyClass { public void Get() { } } public class Stable<T> where T : MyStruct // NOT Allowed { } public class Stable<T>
struct MyStruct
{
public void Get()
{
}
}
class MyClass
{
public void Get()
{
}
}
public class Stable<T> where T : MyStruct // NOT Allowed
{
}
public class Stable<T> where T : MyClass //Allowed
{
}
public class Stable<T> where T : struct //Allowed
{
}
public class Stable<T> where T : class //Allowed
{
}
struct MyStruct
{
公开作废获取()
{
}
}
类MyClass
{
公开作废获取()
{
}
}
公共类稳定,其中T:MyStruct//不允许
{
}
公共类稳定,其中T:MyClass//允许
{
}
公共类稳定,其中T:struct//是允许的
{
}
公共类稳定,其中T:class//允许
{
}
Astruct
不能从另一个struct
继承。因此,在您的-不起作用的示例中-T
必须始终是MyStruct
,这使得泛型的使用在这里毫无用处。Astruct
不能从另一个struct
继承。因此,在您的-不起作用的示例中-T
必须始终是MyStruct
,这使得在这里使用泛型非常无用。默认情况下,结构是密封的,因此您不应该在这里使用泛型
使用:
公共类StableStruct:稳定
{
}
默认情况下,结构是密封的,因此不应在此处使用泛型
使用:
公共类StableStruct:稳定
{
}
公共类稳定,其中T:MyStruct
没有任何意义,只需使用类型(无泛型)并完成它,或约束到结构,例如其中T:struct
公共类稳定,其中T:MyStruct
没有任何意义,只需使用类型(无泛型)并完成它,或者约束到结构,例如其中T:struct
谢谢@Rafal。这就是答案。密封类型不能在结构中使用。谢谢@Rafal。这就是答案。无法在结构中使用密封类型。
public class StableStruct : Stable<MyStruct>
{
}