我尝试了解Extension method concept in c#
,因此我添加了以下界面:
public interface IExtension
{
public static int Multiple(this int a)
{
return a * 2;
}
}
在我的主要方法中
public static void Main()
{
Console.WriteLine("Entrer un numero");
int a =int.Parse( Console.ReadLine());
a.Multiple();
Console.ReadKey();
}
我收到一个错误,a.Multiple();
指示无法识别该方法。
即使我添加了实现该接口的静态类,也遇到了同样的错误。
我该如何解决这个问题?
扩展方法必须位于中static class
,不能位于中interface
public static class MyExtension
{
public static int Multiple(this int a)
{
return a * 2;
}
}
然后您应该打印结果:
Console.WriteLine(a.Multiple());
请注意,您的扩展方法无法更改a
(因为int
是值类型)的值,因此只能返回新值!
通过添加检查
Console.WriteLine(a.Multiple());
Console.WriteLine(a);
出于好奇,Oracle在Java 8中向接口添加了默认方法:https : //docs.oracle.com/javase/tutorial/java/IandI/defaultmethods.html它们有点像C#扩展方法,但它们是在内部定义的接口。实现该接口的类型可以覆盖它们,否则它们将“继承”这些默认方法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句