在C#中指定重载方法而不指定参数时,如何确定使用哪个方法
我有一处房产在C#中指定重载方法而不指定参数时,如何确定使用哪个方法,c#,methods,overloading,C#,Methods,Overloading,我有一处房产 public Func<string, SomeDataTable> GetContactFromAlias { get; set; } 。在给定指定参数的情况下,C#是否自动确定函数的正确版本?在我的例子中,它是有效的,但我想知道,通常情况下,作业的左侧(据我所知)是不被考虑的 GetContactFromAlias = SomeClass.GetContact; 毕竟,使用这种表示法,我无法确定要使用的函数。我当然可以这样做 GetContactFromAlia
public Func<string, SomeDataTable> GetContactFromAlias { get; set; }
。在给定指定参数的情况下,C#是否自动确定函数的正确版本?在我的例子中,它是有效的,但我想知道,通常情况下,作业的左侧(据我所知)是不被考虑的
GetContactFromAlias = SomeClass.GetContact;
毕竟,使用这种表示法,我无法确定要使用的函数。我当然可以这样做
GetContactFromAlias = (alias) => SomeClass.GetContact(alias);
但这并不容易阅读。尽管如此,我是否应该使用后一个版本,以防编译器决定在某个时候以不同的方式处理赋值,而赋值失败?或者是否有一些智能机制在工作中选择正确的重载?只有在您更改或添加
SomeDataRow GetContact(字符串fubar)时才会出现问题代码>“在给定指定参数的情况下,C#是否自动确定函数的正确版本?”当然。在这种情况下,如何将包含2个字符串的重载分配给Func
类型的委托?他们的签名不兼容!C#将查找您的参数并决定哪个签名是有效的。我已经有足够多的赋值失败了-尽管总是在编译时(我必须更具体),但它在这里没有这样做。谢谢你的意见!
GetContactFromAlias = (alias) => SomeClass.GetContact(alias);