2010-02-24 4 views
2

У меня проблемы с перегрузкой в ​​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); 

Edit: Проблема была в моем сценарии сборки. Он не ожидал создания dll перед созданием следующей dll, которая ссылалась на первую, поэтому изменения, которые были сделаны там, где не в DLL, на которую ссылались.

Угадайте, что это ошибка из-за использования IDE.

+0

Можете ли вы опубликовать краткую, но полную программу, которая демонстрирует проблему? – dtb

+2

То же. Я скопировал эти методы в тестовое приложение, а затем вызвал их как без ошибки. Вероятно, ошибка в вызове, а не функция. – xcud

ответ

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); 
     } 
    } 
} 

ли эта ошибка в вашей среде?

1

Вы не указали код вызова. Мой guess - это то, что вы пытаетесь передать строковый массив как первый или третий аргумент вместо второго, но если вы разместите свой код (или, что еще лучше, короткий, но полный пример), то мы сможем разобраться.

0

Не видя, как вы это называете, трудно сказать, но вам нужно будет убедиться, что ваш первый и третий параметры - это строка, и ваш последний параметр, конечно, имеет тип MessageBoxButtons. Только второй параметр может измениться.

0

Может ли это послужить вашим потребностям?

public static void Sample(MessageBoxButtons buttons, params string[] args) 
{ 
}