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//允许
{
}

A
struct
不能从另一个
struct
继承。因此,在您的-不起作用的示例中-
T
必须始终是
MyStruct
,这使得泛型的使用在这里毫无用处。

A
struct
不能从另一个
struct
继承。因此,在您的-不起作用的示例中-
T
必须始终是
MyStruct
,这使得在这里使用泛型非常无用。

默认情况下,结构是密封的,因此您不应该在这里使用泛型

使用:

公共类StableStruct:稳定
{
}

默认情况下,结构是密封的,因此不应在此处使用泛型

使用:

公共类StableStruct:稳定
{
}

公共类稳定,其中T:MyStruct
没有任何意义,只需使用类型(无泛型)并完成它,或约束到结构,例如
其中T:struct
公共类稳定,其中T:MyStruct
没有任何意义,只需使用类型(无泛型)并完成它,或者约束到结构,例如
其中T:struct
谢谢@Rafal。这就是答案。密封类型不能在结构中使用。谢谢@Rafal。这就是答案。无法在结构中使用密封类型。
public class StableStruct : Stable<MyStruct>
{
}