Как решить String должен быть ровно один символ длиной? Ошибка C # .net - PullRequest
0 голосов
/ 08 ноября 2018

Я пытаюсь получить ввод от пользователя с помощью Microsoft.VisualBasic.dll.Затем преобразуйте входные данные из типа [ string ] в тип [ char ].Но это дает мне эту ошибку, когда я запускаю код:

*An exception of type 'System.FormatException' occurred in mscorlib.dll but was not handled in user code
String must be exactly one character long.*

Пример кода:

      string directions = Microsoft.VisualBasic.Interaction.InputBox("1 = Buy, 2 = Sell", "Select side", "Default", 700, 400);

      char direction = System.Convert.ToChar(directions);

Есть идеи, как решить эту проблему?Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 08 ноября 2018

Почему вы выбрали «Default» в качестве ответа по умолчанию? Вы либо оставляете это поле пустым, либо ставите там «1» или «2».

Также проверьте ответ пользователя перед преобразованием в направление:

If directions <> "1" And directions <> "2" Then
    'display error message to user
Else
    char direction = System.Convert.ToChar(directions);
    'proceed with your business logic
End If
0 голосов
/ 08 ноября 2018

Вы можете сделать это: всегда настоятельно рекомендуется перехватывать FormatException и ArgumentNullException, например, по этой ссылке:

https://docs.microsoft.com/en-us/dotnet/api/system.convert.tochar?view=netframework-4.7.2#System_Convert_ToChar_System_String_

char direction;

string directions = Microsoft.VisualBasic.Interaction.InputBox("1 = Buy, 2 = Sell", "Select side", "Default", 700, 400);

if(!string.IsNullOrEmpty(directions) && directions.Trim().Length == 1)
  direction = System.Convert.ToChar(directions);
else {
  direction = directions.FirstOrDefault(); // if thats what your logic
}

или вы можете использовать:

char direction = directions.FirstOrDefault();
...