2013-11-26 4 views
3

Я начинаю вводить код и изучать VB.NET. И пока это плавное плавание.Невозможно преобразовать строку в тип «Двойной»

Пока я не попытаюсь запустить программу.

То, что я сделал, на языке, который я знаю и понимаю, написал игру в палач. А в C# код работает отлично. Как только я добрался до этой завершенной точки, где могу сказать, что больше ничего не хочу изменить, я начал вручную конвертировать ее в VB.NET.

До сих пор никаких проблем. Но я только что закончил конвертировать его, и теперь я ударил свою ловушку.

В нижней части окна находится строка состояния, в которой сообщается, какая головоломка установлена, и в какой головоломке вы находитесь. При выборе головоломки, эта строка кода выдает ошибку:

stsPuzzles.Text = "Puzzle: " + regionPuzzles + "/" + maxPuzzles 

Ошибка является:

Conversion from string "Puzzle" to type 'Double' is not valid. 

Конечно, простой ответ был бы взять эту механику, но по крайней мере, для тестирования цели, я бы хотел, чтобы он был там, чтобы я мог убедиться, что правильные головоломки находятся в правильных наборах.

Есть ли способ исправить это, так что мои две целые переменные могут быть в строке? Или есть работа вокруг, что я могу хотя бы использовать достаточно долго для тестирования для остальной части процесса тестирования?

Я надеюсь найти способ исправить это, так как есть другие места, такие как отображение статистики, которые должны быть в состоянии сделать это.

ответ

7

Прямое исправление для существующего кода заключается в следующем:

stsPuzzles.Text = "Puzzle: " + CStr(regionPuzzles) + "/" + CStr(maxPuzzles) 

или это:

stsPuzzles.Text = "Puzzle: " & regionPuzzles & "/" & maxPuzzles 

В VB.Net, &, а не +, является оператор конкатенации. + часто по-прежнему работает, но также имеет тенденцию думать, что вам нужна арифметика, когда операнд является числовым.

Но что бы я действительно в этом случае заключается в следующем:

stsPuzzles.Text = String.Format("Puzzle: {0}/{1}", regionPuzzles, maxPuzzles) 

или с Visual Studio 2015 или более поздней версии:

stsPuzzles.Text = $"Puzzle: {regionPuzzles}/{maxPuzzles}" 
+0

Это установил ее! Благодарю. Я использовал конвертер кода для начала, и он оставил их как '+', поэтому я предположил, что это правильно. Я, вероятно, должен был искать учебники или что-то, что помогло бы, когда я тоже начал. – Kendra

+7

@ Kendra Если вы еще этого не сделали, вам придется превратить 'Option Strict On'. Особенно, если вы исходите из фона C#. –

+0

Предпочтительный оператор конкатенации строк в VB is & not + (Извините - не видел то же самое выше перед отправкой.) – rheitzman

Смежные вопросы