参数类型不可分配给参数类型

本文关键字:参数 类型 不可分 可分配 | 更新日期: 2023-09-27 17:59:17

我有这样的代码:

List<Pair<string, string>> docs = new List<Pair<string, string>>(); 
iErr = ftpconnect.ListAllDocuments(docs, build.BuildId.ToString());

ListAllDocuments的接口原型是:

Int32 ListAllDocuments(List<Pair<string, string>> DocList, string Path);

我得到一个错误

错误21:"OperatorPanelWrapper.FtpTransportLibWrapper.ListAllDocuments(System.Collections.Generic.List<OperatorPanel.Pair<string,string>>,string)"的最佳重载方法匹配包含一些无效参数

为什么会出现此错误?

参数类型不可分配给参数类型

在发布的第一个代码(new List<Pair<string, string>>())中,尝试将光标放在Pair中,看看Visual Studio认为它是在哪里定义的。它应该显示OperatorPanel.Pair<T1, T2>。如果它显示了在其他地方定义的Pair类型的名称(或错误),那么您的类型是错误的。

有几种可能性:

  • 您在某个地方定义了另一个Pair类(可能是无意的),它引用了错误的类
  • 顶部缺少一个using指令,用于指定编译器应在哪个命名空间中查找Pair
  • 您有一个不同命名空间的using指令,该指令包含一个不是您想要的Pair(例如using System.Web.UI
  • 您缺少对定义Pair的DLL的引用
  • 你的List<T>参考文献在某种程度上是错误的(也许你定义了自己的?)
  • (不太可能)您已经在不返回stringBuildId上定义了自己的ToString

基本上,检查你所有的类型。调用代码中的第一个:List是指System.Collections.Generic.List<T>吗,Pair是指通用OperatorPanel.Pair<T1, T2>吗。。。

尝试

List<OperatorPanel.Pair<string, string>> docs = new List<OperatorPanel.Pair<string, string>>();