[英]C# generic class accepting a inherited type.
**序言我对泛型非常陌生。 我创建了一个名为Geno的课程。 我的Peno类仅包含一个字符串Name属性。 我想知道为什么我不能从此类的方法中调用T.Name。 我将如何访问T上的属性? 有什么好的资源如何运作?
public class Geno<T> where T : Peno
{
}
public string GetName()
{
return T.Name;
}
您的Name
属性是实例属性还是静态属性? 如果它是静态属性,那么无论如何您都不会获得多态性-您可以调用Peno.Name
。
如果它是实例属性,则需要在其上调用它的实例。 例如:
public class Geno<T> where T : Peno
{
private readonly T value;
public Geno(T value)
{
this.value = value;
}
public string GetName()
{
return value.Name;
}
}
如果这样做没有帮助,请提供您要尝试执行的操作的更完整示例。
T
是Peno
类型。 因此,您尝试做的是Peno.Name
,这可能不是您想要的。 这样的事情会起作用:
public string GetName(T t)
{
return t.Name;
}
静态属性不支持继承。 因此,您可以只调用Peno.Name而不是T。
如果您要访问常规属性,则需要创建T的实例,该实例将让您将其称为Name。
T是泛型类型参数,不是传递给使用T的类的参数。
一个很好的例子是List<T>
您说这是一个列表,这意味着您正在创建一个包含String类型对象的列表。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.