我在C#中重载方法时遇到一些麻烦。我有两种看起来像这样的方法。
public static void Sample(string string1, string string2, string string3,
System.Windows.Forms.MessageBoxButtons buttons)
{}
public static void Sample(string string1, string[] string2, string string3, System.Windows.Forms.MessageBoxButtons buttons)
{}
当我尝试调用第二种方法时,我收到错误“无法将'字符串[]'转换为'字符串'”。我做错了什么?
当我重载不采用MessageBoxButtons枚举的方法时,它会起作用,但不适用于此方法。
调用代码看起来像这样。
string[] myStringArray = new string[] {"this is a test","of overloaded methods"};
Sample("String1",myStringArray,"String2",System.Windows.Forms.MessageBoxButtons.OK);
编辑: 问题出在我的构建脚本中。在创建引用第一个dll的下一个dll之前,它没有等待创建dll,因此更改了所在的位置,而不是在被引用的dll中。
猜猜这是不使用IDE的陷阱。
答案 0 :(得分:1)
您尚未显示调用代码。我的 guess 是你试图传入一个字符串数组作为第一个或第三个参数而不是第二个参数 - 但是如果你发布你的代码(或者更好,一个简短而完整的例子)那么我们将能够解决它。
答案 1 :(得分:1)
编译时仍然没有错误:
using System;
namespace Test
{
class Program
{
public static void Sample(string string1,
string string2,
string string3,
System.Windows.Forms.MessageBoxButtons buttons)
{ }
public static void Sample(string string1,
string[] string2,
string string3,
System.Windows.Forms.MessageBoxButtons buttons)
{ }
static void Main()
{
string[] myStringArray =
new string[] { "this is a test", "of overloaded methods" };
Sample("String1",
myStringArray,
"String2",
System.Windows.Forms.MessageBoxButtons.OK);
}
}
}
您的环境中出现此错误吗?
答案 2 :(得分:0)
没有看到你如何称呼这个,很难说,但是你需要确保你的第一个和第三个参数总是字符串,你的最后一个参数当然是MessageBoxButtons类型。只有第二个参数可以改变。
答案 3 :(得分:0)
这可以满足您的需求吗?
public static void Sample(MessageBoxButtons buttons, params string[] args)
{
}