学习扩展方法

gro*_*eto 0 c# extension-methods

我正在学习扩展方法,并且试图编写我的第一个扩展方法。我想使用系统名称空间,并使用该名称空间编写扩展方法。

我的方法是将货币从GBP转换为BGN。

现在,在我的Main方法中,我都想使用此扩展方法,但是出现编译错误。

public static class ExtentionMethodConvertGBPtoBGN
{
    public static double ConvertGBPtoBGN(this ExtentionMethodConvertGBPtoBGN obj, double BGNmoney, double conversionrate)
    {
        return BGNmoney * conversionrate;
    }
}
Run Code Online (Sandbox Code Playgroud)

编译器将引发错误。

错误CS0721'ExtensionMethodConvertGBPtoBGN':静态类型不能用作参数

Kev*_*tsu 6

正确的方法是:

public static class ExtentionMethodConvertGBPtoBGN
{
    public static double ConvertGBPtoBGN(this double obj, double conversionrate)
    {
        return obj * conversionrate;
    }
}
Run Code Online (Sandbox Code Playgroud)

this您需要使用要扩展的类型之后。在这种情况下,显然您想扩展double功能。然后您使用obj(以这种方式命名)from参数。