c#如何在get属性中使用模板?

我在使用C#的get属性中使用模板时遇到一些问题。以下类没有问题:

public class test
{
    public T GetDefault<T>()
    {
        return default(T);
    }
}

但是我想使用get属性,然后出现错误

  

意外使用通用名称

代码如下:

public class test
{
    public T Default<T> => default<T>;
}
xiaoxucheng09 回答:c#如何在get属性中使用模板?

到目前为止,C#中没有通用属性。您可以找到详细信息herehere

  

我们必须为通用属性的后备存储空间保留空间   [...]。但是我们不知道要保留多少。   即使编译器已阅读并理解了每种可能的用法,   通用的。

MSDN声明here

  

属性是字段的自然扩展。两者都是命名成员   关联类型。

它们必须在编译时具有关联的类型。

,

我不认为当前的C#版本支持这种语法糖。但是您会得到类似的行为:

public static class test<T>
{
    public static T Default => default(T);
}

然后使用它:

var value = test<int>.Default;

实际上,如果您在两者之间挣扎,我建议您继续使用以下方法:

public static class test
{
    public static T GetDefault<T>() => default(T);
}

好处是您可以将不同的扩展名放在相同的测试类中,放在不同的类型上。

本文链接:https://www.f2er.com/3145428.html

大家都在问