[英]c# how to use a template in a get property?
我在 c# 的 get 属性中使用模板时遇到了一些问题。 下面的class没有问题:
public class test
{
public T GetDefault<T>()
{
return default(T);
}
}
但我想使用 get 属性然后出现错误
意外使用通用名称
代码如下:
public class test
{
public T Default<T> => default<T>;
}
我认为当前的 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);
}
好处是您可以在不同类型的同一测试 class 中放置不同的扩展。
如果您想使其通用,则应将通用类型传递给 class,如下所示
public class test<T>{
public T Default => default(T);
}
调用它
var defaultValue = new test<TheType>.Default;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.