gpt4 book ai didi

c# - 泛型方法和泛型扩展方法、扩展方法有什么区别?

转载 作者:行者123 更新时间:2023-11-30 15:25:39 25 4
gpt4 key购买 nike

泛型方法泛型扩展方法扩展方法有什么区别?

最佳答案

Generic method通过 MSDN。

A generic method is a method that is declared with type parameters

static void Swap<T>(ref T lhs, ref T rhs)
{
T temp;
temp = lhs;
lhs = rhs;
rhs = temp;
}

此方法交换 lhs(左侧)和 rhs(右侧)之间的引用。因为我们只想交换引用而不关心引用的底层类型是什么,所以我们可以将方法声明为带有类型参数 T 的泛型方法。这意味着它可以是任何类型。这使我们不必编写多个 Swap 方法。

string s1 = "hello";
string s2 = "world";
Swap(ref s1, ref s2);

int i1 = 5;
int i2 = 12;
Swap(ref i1, ref i2);

虽然可以使用对象类型作为 Swap 方法参数来编写示例,但这会导致不必要的值类型开销,称为装箱。


Extension method通过 MSDN

Extension methods enable you to "add" methods to existing types without creating a new derived type, recompiling, or otherwise modifying the original type.

假设我们想扩展现有的字符串类以包含一个计算字符串中单词的方法。

public static int WordCount(this String str)
{
return str.Split(new char[] { ' ', '.', '?' },
StringSplitOptions.RemoveEmptyEntries).Length;
}

现在我们可以计算任何字符串对象中的单词。

string s = "Hello Extension Methods";
int i = s.WordCount();

这对于将功能(方法)添加到您无权访问(例如来自第三方程序集)的现有类特别有用。


通用扩展方法只是前两个概念的混合。

关于c# - 泛型方法和泛型扩展方法、扩展方法有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30697730/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com