是否使用泛型?

Dot*_*nfo 4 .net c#

有一个关于是否使用泛型的简单问题,如果是,这是正确的方法吗?

正常的非通用版本如下:

    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;
    }
}
Run Code Online (Sandbox Code Playgroud)

通用版本如下:

    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;
    }
}
Run Code Online (Sandbox Code Playgroud)

我是否在通用版本中做得很好?是否有必要使用通用版本进行未来增长?这只是原始场景的简单模拟,但它完全类似.

mjw*_*lls 11

我认为在这个具体的例子中这是一个坏主意.

A List<int>通常被描述为List of int.A Cow<IFood>更难描述 - 它肯定不是一头牛的IFood.这不是一个扣篮的争论,但显示了一个潜在的问题.

MSDN声明:

使用泛型类型可以最大化代码重用,类型安全性和性能.

在您的示例中,通用版本没有更多的代码重用,没有更多的类型安全性,也没有改进的性能.