【发布时间】:2011-11-17 13:00:12
【问题描述】:
有一个关于是否使用泛型的简单问题,如果是,这是正确的方法吗?
正常的非泛型版本如下:
public interface IFood
{
string name { get; set; }
}
public class Vegetables : IFood
{
#region IFood Members
public string name
{
get { return "Cabbage"; }
set{ }
}
#endregion
}
public class Cow
{
private IFood _food;
public Cow(IFood food)
{
_food = food;
}
public string Eat()
{
return "I am eating " + _food.name;
}
}
通用版本如下:
public class Cow<T> where T : IFood
{
private T _food;
public Cow(T food)
{
_food = food
}
public string Eat()
{
return "I am eating " + _food.name;
}
}
我在通用版本中做的一切正确吗?未来的增长是否需要使用通用版本?这只是原始场景的简单模型,但完全相似。
【问题讨论】:
-
您是否需要一个与 Cow
完全分离的 Cow 类?或者现在可以给给定的奶牛喂谷物、玉米或任何其他可以用作动物饲料的绒毛吗?通用版本中的奶牛不是一回事,只不过 List 与 List 相同。另一方面,对我来说,牛就是牛。 -
@AnthonyPegram:这应该是一个答案
-
@AnthonyPegram 所以你不推荐使用通用版本,因为 Cow
与 Cow 不同。你能用一个适当的例子和答案部分简要解释一下吗,因为我想将它标记为答案,但在评论部分没有这样做