Созданный метод работает неправильно

Ginxxx спросил: 12 мая 2018 в 03:38 в: c#

Вот мой первый код

public void StringToInt(int[] arrPart, int temp , string[] arrPartStr)
{
    for (int c = 0; c < arrPart.Length; c++)
    {
        temp = 0;        if (arrPartStr[c][0] == 'P') temp = PLAYER * 100;
        else if (arrPartStr[c][0] == 'B') temp = BANKER * 100;
        else temp = TIE * 100;
        if (arrPartStr[c][1] == 'P') temp += PLAYERBANKER;
        if (arrPartStr[c][2] == 'P') temp += BANKERPLAYER;        arrPart[c] = temp;
    }
}public static string SplitString(string history)
{
    string[] text = history.Split(',');    return history;
}

Теперь я применил все те методы, которые я создал

public void firstMethod(string history)
{
    string[] arrPartStr = new string[] { SplitString(history) };
    int[] arrPart = new int[arrPartStr.Length];
    int temp = 0;
    StringToInt(arrPart, temp, arrPartStr);
}

Теперь, что происходит вот что код внутри firstMethod() работает неправильно, как я это сказал. Потому что он не получает ожидаемый результат, который я хочу. Но следующий код

public void firstMethod(string history)
{
    string[] arrPartStr = history.Split(',');
    int[] arrPart = new int[arrPartStr.Length];    for (int c = 0; c < arrPart.Length; c++)
    {
        int temp = 0;        if (arrPartStr[c][0] == 'P') temp = PLAYER * 100;
        else if (arrPartStr[c][0] == 'B') temp = BANKER * 100;
        else temp = TIE * 100;
        if (arrPartStr[c][1] == 'P') temp += PLAYERBANKER;
        if (arrPartStr[c][2] == 'P') temp += BANKERPLAYER;        arrPart[c] = temp;
    }
}

Прекрасно работает, когда я просто поместил код внутри firstMethod(). Может ли кто-нибудь просветить меня, почему.


1 ответ

Есть решение
Ginxxx Nick Dechiara ответил: 12 мая 2018 в 03:47

Функция splitstring возвращает history вместо text; другими словами, вы разделяете строку, но затем возвращаете исходную строку вместо нового, разбитого объекта. Вместо этого верните текст следующим образом:

public static string[] SplitString(string history){    string[] text = history.Split (',');    return text;
}

И затем вызовите его следующим образом

string[] arrPartStr = SplitString (history);

вместо

string[] arrPartStr = new string[] {SplitString (history)};
Ginxxx ответил: 12 мая 2018 в 03:44
@CamiloTerevinto, если я это сделаю, он даст мне "Невозможно неявно преобразовать тип string' to string [] '`
Camilo Terevinto ответил: 12 мая 2018 в 03:43
Это само по себе не будет работать, так как вам нужно изменить вызывающего абонента на string[] arrPartStr = SplitString(history)
Camilo Terevinto ответил: 12 мая 2018 в 03:45
@ TheGinxx009 Нет, это не будет, если вы измените объявление SplitString, как ответил Ник