Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C#中指定重载方法而不指定参数时,如何确定使用哪个方法_C#_Methods_Overloading - Fatal编程技术网

在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);