2.extension方法 在C#中,您不能继承和扩充用访问标识符标记为“封装”的类型。但在C# 3.0中,extension方法允许您扩充任何类,甚至是标记为封装的类。例如,如果希望添加一个NoSpaces()方法到字符串类中,我们要定义一个类似列表A中的extension方法。 列表AnamespaceMyExtensionMethods{ public static class Extension { public static void NoSpaces(this string data) { return data.Replace(" ", ""); } }} 在一个类中导入这个extension方法时,开发者就能够对这个类包含的任何字符串调用NoSapces()方法。 extension方法的第一个参数决定extension方法的有效类型。在这种情况下,“这个字符串数据”(this string data)表明extension方法适用于字符串类;如果extension方法以“这个对象数据”(this object data)为第一个参数,则说明这个方法对每个对象有效。 要表明您希望导入extension方法,只需在它们的命名空间中包括一个using指令。例如,要应用上面说明的方法,需要在类文件中包括一个using MyExtensionMethods指令:(列表B) 列表BusingMyExtensionMethods;namespace MyNamespace{ public class MyClass { public MyClass() { string data = "this is my data"; //nospaces will contain "thisismydata". string nospaces = data.NoSpaces(); } }} 注意extension方法的优先度比instance方法低。因此如果instance方法和extension方法有同样的签名,则应执行instance方法。
转载请注明原文地址: https://ibbs.8miu.com/read-200137.html