matrix.Extension()和ExtensionMethods.Extension(矩阵)有什么区别?
static void Main(string[] args)
{
decimal[,] testData = new[,] {{1m, 2m}, {3m, 4m}};
ImmutableMatice matrix = new ImmutableMatice(testData);
Console.WriteLine(matrix.Extension());
Console.WriteLine(ExtensionMethods.Extension(matrix)); // return the same like matrix.Extension() but whats the difference?
}扩展类
static class ExtensionMethods
{
public static string Extension(this ImmutableMatice array)
{
Console.WriteLine("Values of array are: ");
for (int i = 0; i < array.Array.GetLength(0); i++)
{
for (int j = 0; j < array.Array.GetLength(1); j++)
{
Console.Write(string.Format("{0} ", array[i, j]));
}
Console.Write(Environment.NewLine + Environment.NewLine);
}
return null;
}发布于 2014-08-12 21:41:39
matrix.Extension()和ExtensionMethods.Extension(矩阵)有什么区别?
什么都没有。编译器有效地将第一个转换为第二个。
在C# 6中会有一个不同之处,如果你已经特别静态地导入了ExtensionMethods类型,第一个将会工作,而第二个将不会。
扩展方法是静态方法,但旨在用作实例方法。using static功能使类型的扩展方法可用作扩展方法,而不是将扩展方法引入全局作用域
(不过,这在当前的CTP中还没有实现。)
考虑到它们是等价的,您可能会问自己为什么会存在这种语法糖。有两个原因:
foo.Bar().Baz().Qux()
比以下代码更易于阅读:
ThirdClass.Qux(SecondClass.Baz(FirstClass.Bar(foo)))
https://stackoverflow.com/questions/25265810
复制相似问题