【C#】C#扩展类方法及Arcgis Geometry字段扩展ToWkt方法

C#扩展类方法

在C#中,你可以通过创建一个静态类来扩展另一个类的功能。这个类中的方法都是静态的,可以直接通过类名调用,而不需要创建类的实例。扩展方法可以让你给现有类添加新的方法,就好像这些方法是在类本身中定义的一样。

扩展方法必须在一个非泛型的静态类中定义。这个类我们称为扩展类,扩展方法必须是静态方法。

扩展方法的第一个参数前面标有 this 关键字,指定了它扩展的类型。它的第一个参数是要扩展的类型的实例。

下面是一个如何定义扩展方法的例子:

C# 复制代码
public static class ExtensionMethods
{
    public static int WordCount(this String str)
    {
        return str.Split(new char[] { ' ', '.', '?' }, StringSplitOptions.RemoveEmptyEntries).Length;
    }
}

在上面的例子中,我们创建了一个名为ExtensionMethods的静态类,并在其中定义了一个名为WordCount的扩展方法。这个方法计算字符串中的单词数量。

你可以这样使用这个扩展方法:

C# 复制代码
string s = "Hello Extension Methods World!";
int wordCount = s.WordCount();
Console.WriteLine(wordCount);  // 输出:4

在这个例子中,我们使用了我们刚刚定义的WordCount扩展方法来计算字符串"s"中的单词数量,并将结果输出到控制台。

注意:扩展方法有一些使用限制,例如,不能直接修改 this 参数所指向的对象状态,也不能覆盖已经存在的方法。此外,扩展方法的使用需要包含扩展方法的命名空间。

Arcgis Geometry字段扩展ToWkt方法

在GIS桌面端开发过程中通常会用到图形转wkt的方法,这里可以将IGeometry进行扩展,从而方便的获取wkt字段

C# 复制代码
#用到的库
#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);
        }
}
相关推荐
试行几秒前
C#System.Runtime.InteropServices.ExternalException (0x80004005): GDI+ 中发生一般性错误。
c#
每日出拳老爷子3 小时前
[C#] 使用TextBox换行失败的原因与解决方案:换用RichTextBox的实战经验
开发语言·c#
程序猿多布12 小时前
C# 值拷贝、引用拷贝、浅拷贝、深拷贝
c#
阿蒙Amon13 小时前
C#随机数生成全面详解:从基础到高级应用
服务器·网络·c#
开开心心_Every13 小时前
便捷的电脑自动关机辅助工具
开发语言·人工智能·pdf·c#·电脑·音视频·sublime text
我要打打代码16 小时前
C#Winform窗体显示模糊的问题
c#
阿蒙Amon16 小时前
C#正则表达式全面详解:从基础到高级应用
开发语言·正则表达式·c#
水果里面有苹果18 小时前
19-C#静态方法与静态类
java·开发语言·c#
吃着火锅x唱着歌18 小时前
LeetCode 3306.元音辅音字符串计数2
算法·leetcode·c#
格林威1 天前
Baumer工业相机堡盟工业相机如何通过DeepOCR模型识别判断数值和字符串的范围和相似度(C#)
开发语言·人工智能·python·数码相机·计算机视觉·c#·视觉检测