如果我在同一个同名的类中有两个方法,那么参数是否有助于区分方法以避免冲突?
即
Class1
{
void CompareInput(Form1 frm) { }
void CompareInput(Form2 frm) { }
}
答案 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)用于特定情况。如果未找到匹配的签名,则会引发编译器错误。