小编Oll*_*son的帖子

关于方法参数类型的多态性

我想我有一个很常见的问题,但我真的可以想出一个解决方案。

想象一下这个类:

public class ListHandlerBase
{
    public virtual void Add(object item)
    {
        // XXX
    }
}


public class ListHandler : ListHandlerBase
{
    List<object> ObjectList = new List<object>();
    List<string> StringList = new List<string>();
    List<int> IntList = new List<int>();

    public override void Add(object item)
    {
        HandleAdd(item);
    }

    private void HandleAdd(object item)
    {
        ObjectList.Add(item);
    }

    private void HandleAdd(string item)
    {
        StringList.Add(item);
    }

    private void HandleAdd(int item)
    {
        IntList.Add(item);
    }
}
Run Code Online (Sandbox Code Playgroud)

它有一个 Add 方法接受非常通用的类型对象。然而,有几种方法可以处理对象,但只有“HandleAdd(object item)”会被调用,因为 item 是 object 类型的(即使它真的是一个字符串)。我想要某种虚拟/覆盖。

有一个丑陋的解决方案可能如下所示:

    public void Add(object item) …
Run Code Online (Sandbox Code Playgroud)

c#

4
推荐指数
1
解决办法
1650
查看次数

标签 统计

c# ×1