|
|
1
11
他们被称为
extension methods
剩下的就是编译器的魔力。 |
|
|
2
8
ToString是System.Object的成员,因此每个对象都有此方法。
然而,在这种情况下,如果您创建了一个具有“object”类型的扩展方法,那么最终将为每个对象添加一个扩展方法——即使是那些无法发布的对象。 |
|
|
3
2
所有类都从object继承,object实现ToString()。许多类重写ToString以使其呈现特殊的内容。您也可以在类中重写ToString。 现在,如果你说的是扩展方法,那就不同了。如果有一个名为ClassA的类,我可以在另一个类中扩展它,如下所示:
然后像这样使用它:
|
|
|
5
1
这些方法使用类中的状态进行操作,因此并不总是需要参数。您可以在一个类中实现该方法,并且可以访问该类的任何实例(变量)。 例如:
如果您希望函数在所有类上都可用,就像ToString一样,您需要使用扩展方法将其添加到对象类中。因为所有对象都继承自Object,并且ToString是Object类的一个方法,所以它在所有类上都可用。由于没有创建对象类,因此在创建对象类之后添加其他方法的唯一方法是使用扩展方法。 |
|
6
1
.toString()可以在任何位置工作,因为所有对象都继承自System.object。 在System.Object的类定义中,定义了一个toString()方法。 |
|
|
7
1
你的问题的直接答案是“扩展方法”,Chris Pebble对其进行了很好的描述,并将其与其他答案联系起来。 然而,对于您的特定代码示例,我会强烈地争辩 反对 定义扩展方法,因为:
我建议改为使用以下简单实用程序类:
您可以这样使用它:
|
|
|
A B · C#Excel自动调整列避免长文本时出错 1 年前 |
|
|
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 1 年前 |
|
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 1 年前 |
|
|
Sei · Avalonia/WPF将路由器传递到控制模板 1 年前 |