编译 Visual C# .NET 控制台应用程序时出现“无效参数”错误信息

症状

<script type="text/javascript">loadTOCNode(1, 'symptoms');</script>
当您编译 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”)

原因

<script type="text/javascript">loadTOCNode(1, 'cause');</script>
传递给函数的参数类型与该函数的参数类型不匹配。 如果被调用的函数被重载,则没有一个重载版本的签名与所传递的参数类型匹配。

解决方案

<script type="text/javascript">loadTOCNode(1, 'resolution');</script>
若要解决此问题,请执行以下任一操作:
仔细检查所传递的参数的类型,以确保该类型与所调用的函数的参数相匹配。 更正任何可能造成该问题的编码错误。
如果适合,可使用 System.Convert 类转换任何不匹配的参数。
如果适合,可强制转换任何不匹配的参数类型,以便与函数所需的类型相匹配。
如果适合,可定义函数的另一重载版本,以便与所发送的参数类型相匹配。

状态

<script type="text/javascript">loadTOCNode(1, 'status');</script>
这种现象是设计使然。

更多信息

<script type="text/javascript">loadTOCNode(1, 'moreinformation');</script>
在下面的示例 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值