C#中泛型扩展方法的疑问

首先有以下两个类publicclassSwapper<T>{publicstaticvoidSwap(refTx,refTy){Ttmp=x;x=y;y=tmp;}}pu... 首先有以下两个类
public class Swapper<T>
{
public static void Swap(ref T x, ref T y)
{
T tmp = x;
x = y;
y = tmp;
}
}
public static class SwapperExtension
{
public static void Swap<T>(this Swapper<T> sw, ref T x1, ref T x2, ref T x3)
{
T tmp = x1;
x1 = x2;
x2 = x3;
x3 = tmp;
}
public static void Swap(this Swapper<int> sw, ref int[] x)
{
if (x.Length > 1)
{
int tmp = x[0];
for (int i = 0; i < x.Length - 1; i++)
{
x[i]=x[i+1];
}
x[x.Length - 1] = tmp;
}
}
}
第二个类用于泛型的·扩展方法。在主程序中,为什么
Swapper<int> sw1 = new Swapper<int>();
int x1 = 5, x2 = 10;
sw1.Swap(ref x1, ref x2);
是错误的?
展开
 我来答
593758685
2013-07-22 · TA获得超过276个赞
知道小有建树答主
回答量:377
采纳率:100%
帮助的人:230万
展开全部
很简单,你在Swapper<T>中定义的是静态方法public static void Swap(ref T x, ref T y),不能通过实例调用,而你的扩张方法没有定义两个参数的实例方法,所以你的程序会报错,
把public static void Swap(ref T x, ref T y)中的static去掉即可
zljk0306
2013-07-22 · TA获得超过366个赞
知道小有建树答主
回答量:229
采纳率:90%
帮助的人:205万
展开全部
public static void Swap(ref T x, ref T y)要么去掉这个static;

要么将扩展方法的名字改一下,不要和Swap重名!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式