本文的发布号曾为 CHS311156
症状
当您编译 Visual C# .NET 控制台应用程序时,可能会收到下面的错误信息:
error CS1502: The best overloaded method match for 'declaration' has some invalid arguments(错误 CS1502:与“declaration”最匹配的重载方法具有一些无效参数)
备注: CS1502 错误信息总是与 CS1503 错误信息一起出现:
error CS1503: Argument 'arg': cannot convert from 'type1' to 'type2'(错误 CS1503:参数“arg”:无法从“type1”转换为“type2”)
原因
传递给函数的参数类型与该函数的参数类型不匹配。 如果被调用的函数被重载,则没有一个重载版本的签名与所传递的参数类型匹配。解决方案
若要解决此问题,请执行以下任一操作:- 仔细检查所传递的参数的类型,以确保该类型与所调用的函数的参数相匹配。 更正任何可能造成该问题的编码错误。
- 如果适合,可使用 System.Convert 类转换任何不匹配的参数。
- 如果适合,可强制转换任何不匹配的参数类型,以便与函数所需的类型相匹配。
- 如果适合,可定义函数的另一重载版本,以便与所发送的参数类型相匹配。
状态
这种现象是设计使然。更多信息
在下面的示例 Visual C# .NET 控制台应用程序中, Test 函数有两个重载版本。 第一个版本仅使用一个 int 类型。 第二个版本需要 int 类型作为其第一个参数,一个 string 类型作为其第二个参数。 但是,在 Main 函数中,所传递的第一个参数 ( nNum) 是 string 类型。 这两个重载的 Test 函数都没有将 string 类型作为第一个参数。using System; namespace x { public class CTest { public static void Test(int n1) {} public static void Test(int n1, string str){} public static void Main() { string nNum = "1000"; CTest.Test(nNum, "string2"); //CS1502 } } }纠正此错误的一种方法是将 nNum 声明为一个整数,如下所示:
int nNum = 1000;另一种方法是,在调用 Test 函数之前,将字符串转换为整数。 下面的代码可纠正编译器错误并生成所需的结果:
string nNum = "1000"; int nNumConverted = System.Convert.ToInt32(nNum, 10); CTest.Test(nNumConverted, "string2");//CS1502
这篇文章中的信息适用于:
- Microsoft Visual C# .NET (2002)
最近更新: | 2002-1-17 (1.0) |
关键字 | kbprb kbProd2Web KB311156 |