Методы перегрузки проблем при использовании string и string [] - PullRequest
2 голосов
/ 24 февраля 2010

У меня небольшие проблемы с перегрузкой методов в 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.

Ответы [ 4 ]

1 голос
/ 24 февраля 2010

Все еще нет ошибок при компиляции:

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 голос
/ 24 февраля 2010

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

0 голосов
/ 24 февраля 2010

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

public static void Sample(MessageBoxButtons buttons, params string[] args)
{
}
0 голосов
/ 24 февраля 2010

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

...