在以下情况下,我经常遇到诸如“无法从“方法组”转换为“字符串””之类的错误:
var list = new List<string>(); // ... snip list.Add(someObject.ToString);
当然,最后一行有一个错字,因为我忘了后面的调用括号ToString。正确的格式为:
ToString
var list = new List<string>(); // ... snip list.Add(someObject.ToString()); // <- notice the parentheses
但是我开始想知道什么是方法组。Google并不是MSDN的帮手。
方法组是一个名称 的一套方法 (可能是只有一个) -即理论上的ToString方法可以有多个重载(加任何扩展方法)ToString(),ToString(string format)等-因此ToString本身是一个“方法组”。
ToString()
ToString(string format)
通常,它可以使用重载解析将方法组转换为(类型化的)委托,但不能转换为字符串等。这没有意义。
一旦加上括号,再次;重载解析开始,您已经明确确定了方法调用。