使用where限制到基类的泛型
本文关键字:基类 泛型 where 使用 | 更新日期: 2023-09-27 18:27:21
我有一个方法:
private double FindPrice<T>(T l_Price_Breaks) where T : ?
{
}
?
我想限制为3个类X、Y、Z。这三个类来自一个名为child:的类
public class X : Child
public class Y : Child
public class Z : Child
我不能就这么做吗:
private double FindPrice<T>(T l_Price_Breaks) where T : Child
{
}
它有效,但当我尝试使用以下方法调用此方法时:
X MyX = new X();
double return = FindPrice(MyX);
我得到"没有从X到Child的隐含转换"。
代码对我有效,但有一个例外:您有一个名为return
的变量名,它不起作用,因为这是c#中的保留关键字。将其重命名为result
。
你可以,但你的代码还有一堆问题,比如
应为标识符;'return是一个关键字。
Public
需要是public
等
如果你像这个一样重写你的代码
class GenericTest
{
public class Child { }
public class X : Child { }
public class Y : Child { }
public class Z : Child { }
private double FindPrice<T>(T l_Price_Breaks) where T : Child
{
return 2;
}
private void foobar()
{
X MyX = new X();
double retValue = FindPrice(MyX);
}
}
它编译得很好。
您缺少一些基本信息,如FindPrice
的实现,但我猜您在FindPrice
方法的主体中使用的是Child
而不是T
。