赞
踩
在C#中,你可以通过创建一个静态类来扩展另一个类的功能。这个类中的方法都是静态的,可以直接通过类名调用,而不需要创建类的实例。扩展方法可以让你给现有类添加新的方法,就好像这些方法是在类本身中定义的一样。
扩展方法必须在一个非泛型的静态类中定义。这个类我们称为扩展类,扩展方法必须是静态方法。
扩展方法的第一个参数前面标有 this 关键字,指定了它扩展的类型。它的第一个参数是要扩展的类型的实例。
下面是一个如何定义扩展方法的例子:
public static class ExtensionMethods
{
public static int WordCount(this String str)
{
return str.Split(new char[] { ' ', '.', '?' }, StringSplitOptions.RemoveEmptyEntries).Length;
}
}
在上面的例子中,我们创建了一个名为ExtensionMethods的静态类,并在其中定义了一个名为WordCount的扩展方法。这个方法计算字符串中的单词数量。
你可以这样使用这个扩展方法:
string s = "Hello Extension Methods World!";
int wordCount = s.WordCount();
Console.WriteLine(wordCount); // 输出:4
在这个例子中,我们使用了我们刚刚定义的WordCount扩展方法来计算字符串"s"中的单词数量,并将结果输出到控制台。
注意:扩展方法有一些使用限制,例如,不能直接修改 this 参数所指向的对象状态,也不能覆盖已经存在的方法。此外,扩展方法的使用需要包含扩展方法的命名空间。
在GIS桌面端开发过程中通常会用到图形转wkt的方法,这里可以将IGeometry进行扩展,从而方便的获取wkt字段
#用到的库 #using ESRI.ArcGIS.Geometry; #using NetTopologySuite.Geometries; #using NetTopologySuite.IO; # public static class GeometryExtension { public static string ToWkt(this IGeometry geometry) { if (geometry?.IsEmpty ?? true) { return null; } byte[] array = geometry.ToWKB(); if (array == null || array.Length == 0) { return null; } WKBReader wKBReader = new WKBReader(); Geometry geometry2 = wKBReader.Read(array); WKTWriter wKTWriter = new WKTWriter(); return wKTWriter.Write(geometry2); } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。