C#泛型扩展方法已编译但无法使用?
我试图编写一个通用的扩展方法,将固定矩阵添加到“弹性”矩阵中。扩展方法编译,并且(我假设)它的代码在常规方法中运行良好。我知道我将在各种类型中大量使用此功能,因此我更愿意解决此问题,而不是带着创可贴蹒跚而行:C#泛型扩展方法已编译但无法使用?,c#,.net,generics,methods,C#,.net,Generics,Methods,我试图编写一个通用的扩展方法,将固定矩阵添加到“弹性”矩阵中。扩展方法编译,并且(我假设)它的代码在常规方法中运行良好。我知道我将在各种类型中大量使用此功能,因此我更愿意解决此问题,而不是带着创可贴蹒跚而行: public void AddMatrix<T>(this List<T[]> MyList, T[,] Matrix) { if (MyList == null) throw new ArgumentNullException("M
public void AddMatrix<T>(this List<T[]> MyList, T[,] Matrix)
{
if (MyList == null) throw new ArgumentNullException("MyList");
if (Matrix == null) throw new ArgumentNullException("Matrix");
for (int i = 0; i < Matrix.GetLength(0); i++)
{
T[] aLine = new T[Matrix.GetLength(1)];
for (int j = 0; j < Matrix.GetLength(1); j++)
aLine[j] = Matrix[i, j];
MyList.Add(aLine);
}
}
public void testAddMatrix()
{
List<string[]> aMyBigMatrix = new List<string[]>();
string[,] aSmallerMatrix =
{
{
"foo",
"bar",
"what"
}
};
aMyBigMatrix.AddMatrix(aSmallerMatrix); // .AddMatrix is not showing up here in Intellisense?
}
public void AddMatrix(此列表为MyList,T[,]矩阵)
{
如果(MyList==null)抛出新的ArgumentNullException(“MyList”);
如果(矩阵==null)抛出新的ArgumentNullException(“矩阵”);
对于(int i=0;i
您正在编写扩展方法,AddMatrix
需要是静态的。您正在编写扩展方法,AddMatrix
需要是静态的。来自:
定义并调用扩展方法
您的方法不是静态的(2)。扩展方法必须是静态的。扩展方法必须是静态的。扩展方法必须是静态的 将其更改为: 公共静态void AddMatrix(此列表为MyList,T[,]矩阵)
并确保类也是静态的。扩展方法必须是静态的 将其更改为: 公共静态void AddMatrix(此列表为MyList,T[,]矩阵)
并且确保类也是静态的。每个人都很快指出,扩展方法必须是静态的
当我试图复制您的错误时,我得到了一个编译器错误“扩展方法必须是静态的”,所以您报告您的代码已编译,这对我来说似乎很奇怪。当您试图编译它时,请查看错误列表以查看它是否为空。我怀疑您会发现一条以前没有注意到的错误消息。如果您能够看到编译器错误,那么这种性质的错误将很容易识别和修复。正如大家很快指出的那样,扩展方法必须是静态的
当我试图复制您的错误时,我得到了一个编译器错误“扩展方法必须是静态的”,所以您报告您的代码已编译,这对我来说似乎很奇怪。当您试图编译它时,请查看错误列表以查看它是否为空。我怀疑您会发现一条以前没有注意到的错误消息。如果您能够看到编译器错误,那么这种性质的错误将很容易识别和修复。当您使用它时会发生什么?当您使用它时会发生什么?标记为正确,以包括扩展方法的所有必要要求。我已经做了很多方法,但我想我做这一个的时候完全是脑子放屁了!标记正确,包括扩展方法的所有必要要求。我已经做了很多方法,但我想我做这一个的时候完全是脑子放屁了+我想让你知道我很感激你花时间回答我的问题。我想让你知道我很感激你花时间回答我的问题,虽然感谢您抽出时间回答我的问题。+1对于正确答案,我只能标记一个正确答案。感谢您抽出时间回答我的问题。谢谢您回答我的问题!谢谢你回答我的问题!