作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
有一个关于是否使用泛型的简单问题,如果是,这是正确的方法吗?
正常的非泛型版本如下:
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;
}
}
我在通用版本中做的一切都正确吗?是否有必要使用 Generic 版本来实现 future 的增长?这只是原始场景的简单模型,但它完全相似。
最佳答案
我认为在这个具体例子中这是个坏主意。
A List<int>
通常被描述为 List of int。Cow<IFood>
更难描述 - 它肯定不是 IFood 的奶牛。这不是灌篮高手的争论,而是显示了一个潜在的问题。
MSDN状态:
Use generic types to maximize code reuse, type safety, and performance.
在您的示例中,通用版本不再有代码重用、类型安全和性能改进。
关于c# - 是否使用泛型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8162247/
我是一名优秀的程序员,十分优秀!