参数区分方法吗?

时间:2014-08-20 00:06:27

标签: c# parameters

如果我在同一个同名的类中有两个方法,那么参数是否有助于区分方法以避免冲突?

Class1
{
    void CompareInput(Form1 frm) { }

    void CompareInput(Form2 frm) { }
}

2 个答案:

答案 0 :(得分:2)

是的,它被称为Overloading

interface ITest
{
    void F();                     // F()
    void F(int x);                // F(int)
    void F(ref int x);            // F(ref int)
    ...
    int F(string s);              // F(string)
    ...
}

这个想法是编译器根据其参数的类型选择正确的函数。

例如,以下代码将调用两个不同的函数:

ITest test = // get interface
test.F(0);
test.F("string");

答案 1 :(得分:2)

是。差异由参数的类型完成,称为Member Overloading(又称方法重载):

  

成员的签名包括其名称和参数列表。 每个成员签名在类型中必须是唯一的。成员可以具有相同的名称,只要它们的参数列表不同。当一个类型中的两个或多个成员是同一种成员(方法,属性,构造函数等)并且具有相同的名称和不同时参数列表,该成员被称为重载 ..

使用的实际方法是根据参数列表类型在呼叫/使用地点应用的参数类型选择的。

一般而言,选择“最佳”选择,并且可以容易地找到示例(例如Overloaded method selection logic)用于特定情况。如果未找到匹配的签名,则会引发编译器错误。