C# c是否可以为字符串关键字创建扩展方法

C# c是否可以为字符串关键字创建扩展方法,c#,extension-methods,C#,Extension Methods,我创建了一个扩展方法,用于从System.Guid生成字符串,如下所示 public static class Fnk { public static string Guid(bool dash = true) { return dash ? System.Guid.NewGuid().ToString() : System.Guid.NewGuid().ToString("N"); } } 我像使用Fnk.Guid一样使用它。我想知道,是否可以像st

我创建了一个扩展方法,用于从System.Guid生成字符串,如下所示

public static class Fnk
{

    public static string Guid(bool dash = true)
    {
        return dash ? System.Guid.NewGuid().ToString() : System.Guid.NewGuid().ToString("N");
    }
}
我像使用Fnk.Guid一样使用它。我想知道,是否可以像string.Guid那样调用它?如果是,如何进行

可以像string.Guid那样调用它吗

不可以。扩展方法允许调用静态方法,就像调用实例方法一样。您正试图编写一个静态方法,并允许调用它,就好像它是一个不相关类型上的静态方法一样

这是不受支持的-至少在C8中是不受支持的

编写真正的以字符串为目标的扩展方法是完全可行的。例如:

公共静态类无点 { 公共静态hasevenLength此字符串text=>text.Length&1==0; } 称为:

bool result1=odd.HasEvenLength;//错误的 bool result2=偶数。HasEvenLength;//符合事实的 可以像string.Guid那样调用它吗

不可以。扩展方法允许调用静态方法,就像调用实例方法一样。您正试图编写一个静态方法,并允许调用它,就好像它是一个不相关类型上的静态方法一样

这是不受支持的-至少在C8中是不受支持的

编写真正的以字符串为目标的扩展方法是完全可行的。例如:

公共静态类无点 { 公共静态hasevenLength此字符串text=>text.Length&1==0; } 称为:

bool result1=odd.HasEvenLength;//错误的 bool result2=偶数。HasEvenLength;//符合事实的
此变量名必须是第一个参数。在代码中,您只需根据条件返回guid值。扩展方法的参数为this kewyord。您的代码不是扩展方法。是否将字符串解析为guid?string.Guid方法将做什么?此外,Guid已经有了一个生成无破折号字符串的选项。对不起,我不明白这有什么意思使用N删除破折号。此变量名必须是第一个参数。在代码中,您只需根据条件返回guid值。扩展方法的参数为this kewyord。您的代码不是扩展方法。是否将字符串解析为guid?string.Guid方法将做什么?此外,Guid已经有了一个生成无破折号字符串的选项。对不起,我不明白这有什么意思使用N删除破折号。小添加:如果一个类派生另一个具有静态成员的类,那么您也可以通过派生类调用该静态成员。无点sextensions。我想我会用这个名字,我明白了。非常感谢您的关注和支持。小补充:如果一个类派生了另一个具有静态成员的类,那么您也可以通过派生类调用该静态成员。我想我会用这个名字,我明白了。非常感谢您的关注和支持。