C#为不同类型的参数定义一个方法

本文关键字:一个 方法 定义 同类型 参数 | 更新日期: 2023-09-27 18:01:00

我已经看到,您可以为c#中的不同参数集定义不同的函数,如下所示:

public bool foo(string bar) {
    //do something1
}
public bool foo(int bar, bool spam) {
    //do something2
}

但是,你能为不同的参数集定义一个函数吗?在我的情况下,它将用于IListList。由于这些类型只是略有变化,我可以对IListList对象使用相同的函数(这是一个简单的函数,只查找一些特定的元素(。有没有什么聪明的方法可以做到这一点,比如不模仿意大利面?

谢谢!

C#为不同类型的参数定义一个方法

是的,您只能使用IList作为参数的类型,因为List实现了IList

例如,您可以声明

public void MethodName(IList list)
{
    // Method's body.
}

您将传递的列表可以是具体的List,也可以是实现IList的类型,而不必声明两个方法。

如果您正在尝试使用IListList。我认为你不需要不同的方法。因为List实现了IList,因此您可以很容易地在代码中强制转换它们。因此,相同的功能将适用于两者。

如果您不修改函数中的项,那么您可以更进一步,使用IEnumerable作为参数类型。

例如-

protected void Method(IList list){
}

protected void Method(IEnumerable items){
}

但请记住,使用接口时有一个区别,它们是通过引用传递的,因此不会创建新的副本。您所做的任何修改都将影响原始项目集合。如果您需要传递值或想要创建新的副本,请在-内调用.ToList()

例如-

protected void Method(IList list){
    //some code
    var copied = list.ToList();
}

protected void Method(IEnumerable items){
    //some code
    var copied = items.ToList();
}

列出IList内部继承的对象。所以,当您调用方法时使用,然后将IList转换为List对象,或者将List对象转换为IList,就像您在方法中使用对象类型一样。