学习推广方法
Learning extension methods
我正在学习扩展方法,并且正在尝试编写我的第一个扩展方法。我想使用系统命名空间并使用它编写扩展方法。
我的方法是将货币从 GBP 转换为 BGN。
现在在我的 Main 方法中,我想使用这个扩展方法,但是我遇到了编译错误。
public static class ExtentionMethodConvertGBPtoBGN
{
public static double ConvertGBPtoBGN(this ExtentionMethodConvertGBPtoBGN obj, double BGNmoney, double conversionrate)
{
return BGNmoney * conversionrate;
}
}
编译器抛出错误。
错误 CS0721 'ExtentionMethodConvertGBPtoBGN': 静态类型不能用作参数
this
之后的类型需要是您希望扩展方法存在的对象。
所以如果你想让它在 double
上工作,它需要
public static double ConvertGBPtoBGN(this double obj, double BGNmoney, double conversionrate)
正确的做法是:
public static class ExtentionMethodConvertGBPtoBGN
{
public static double ConvertGBPtoBGN(this double obj, double conversionrate)
{
return obj * conversionrate;
}
}
在 this
之后您需要使用您想要扩展的类型。在那种情况下,显然您想扩展 double
功能。然后您使用参数中的 obj
(您这样命名)。
您可以通过以下两种方式进行操作:
让我们,转换为主转换class:
public class Conversion
{
}
并且,ExtentionMethodConvertGBPtoBGN 是您的扩展 class:
public static class ExtentionMethodConvertGBPtoBGN
{
//extension mathod
public static double ConvertGBPtoBGN(this Conversion obj, double BGNmoney, double conversionrate)
{
return BGNmoney * conversionrate;
}
//non-extension mathod
public static double ConvertGBPtoBGN(double BGNmoney, double conversionrate)
{
return BGNmoney * conversionrate;
}
}
现在可以两种方式调用了:
static void Main(string[] args)
{
var con = new Conversion();
var result = con.ConvertGBPtoBGN(10.0, 20.0);
//or
var result2 = ExtentionMethodConvertGBPtoBGN.ConvertGBPtoBGN(10.0, 20.0);
}
我正在学习扩展方法,并且正在尝试编写我的第一个扩展方法。我想使用系统命名空间并使用它编写扩展方法。
我的方法是将货币从 GBP 转换为 BGN。
现在在我的 Main 方法中,我想使用这个扩展方法,但是我遇到了编译错误。
public static class ExtentionMethodConvertGBPtoBGN
{
public static double ConvertGBPtoBGN(this ExtentionMethodConvertGBPtoBGN obj, double BGNmoney, double conversionrate)
{
return BGNmoney * conversionrate;
}
}
编译器抛出错误。
错误 CS0721 'ExtentionMethodConvertGBPtoBGN': 静态类型不能用作参数
this
之后的类型需要是您希望扩展方法存在的对象。
所以如果你想让它在 double
上工作,它需要
public static double ConvertGBPtoBGN(this double obj, double BGNmoney, double conversionrate)
正确的做法是:
public static class ExtentionMethodConvertGBPtoBGN
{
public static double ConvertGBPtoBGN(this double obj, double conversionrate)
{
return obj * conversionrate;
}
}
在 this
之后您需要使用您想要扩展的类型。在那种情况下,显然您想扩展 double
功能。然后您使用参数中的 obj
(您这样命名)。
您可以通过以下两种方式进行操作: 让我们,转换为主转换class:
public class Conversion
{
}
并且,ExtentionMethodConvertGBPtoBGN 是您的扩展 class:
public static class ExtentionMethodConvertGBPtoBGN
{
//extension mathod
public static double ConvertGBPtoBGN(this Conversion obj, double BGNmoney, double conversionrate)
{
return BGNmoney * conversionrate;
}
//non-extension mathod
public static double ConvertGBPtoBGN(double BGNmoney, double conversionrate)
{
return BGNmoney * conversionrate;
}
}
现在可以两种方式调用了:
static void Main(string[] args)
{
var con = new Conversion();
var result = con.ConvertGBPtoBGN(10.0, 20.0);
//or
var result2 = ExtentionMethodConvertGBPtoBGN.ConvertGBPtoBGN(10.0, 20.0);
}