我在使用C#的get属性中使用模板时遇到一些问题。以下类没有问题:
public class test
{
public T GetDefault<T>()
{
return default(T);
}
}
但是我想使用get属性,然后出现错误
意外使用通用名称
代码如下:
public class test
{
public T Default<T> => default<T>;
}
我在使用C#的get属性中使用模板时遇到一些问题。以下类没有问题:
public class test
{
public T GetDefault<T>()
{
return default(T);
}
}
但是我想使用get属性,然后出现错误
意外使用通用名称
代码如下:
public class test
{
public T Default<T> => default<T>;
}
到目前为止,C#中没有通用属性。您可以找到详细信息here和here:
我们必须为通用属性的后备存储空间保留空间 [...]。但是我们不知道要保留多少。 即使编译器已阅读并理解了每种可能的用法, 通用的。
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);
}
好处是您可以将不同的扩展名放在相同的测试类中,放在不同的类型上。