Я пытаюсь создать оператор switch на основе двух символов. Однако это, похоже, не работает и всегда оценивает значение по умолчанию. Так, может кто-нибудь, пожалуйста, покажет мне правильный способ сделать это?Использование String в инструкции switch
Вот мой (предположительно неправильно) код:
string GetPieceCode(GameObject piece)
{
string pieceCode = "";
Debug.Log(piece.gameObject);
pieceCode = piece.ToString().Remove(2,2);
Debug.Log(pieceCode);
return pieceCode;
}
Debug.Log(pieceType);
switch (pieceType)
{
case "BP":
Debug.Log("Black Pawn Selected");
break;
case "WP":
Debug.Log("White Pawn Selected");
break;
case "WB":
print("White Bishop Selected");
break;
case "BB":
print("Black Bishop Selected");
break;
case "WK":
print("White Knight Selected");
break;
case "BK":
print("Black Knight Selected");
break;
case "WR":
print("White Roook Selected");
break;
case "BR":
print("Black Rook Selected");
break;
case "WKing":
print("White King Selected");
break;
case "WQueen":
print("White Queen Selected");
break;
case "BKing":
print("Black King Selected");
break;
case "BQueen":
print("Black Queen Selected");
break;
default;
debug.log("Error");
break;
}
Начальные Debug.Log(pieceType)
распечатывает 2 символьная строка кода, который показывает, что он соответствует значения регистра. Поэтому я не вижу, что происходит не так. В этом контексте идентичны print()
и Debug.Log()
.
Вы уверены, что это код _identical_ two character? Любые пробелы после него и т. Д., Возможно? –
Каково точное значение 'pieceType' во время выполнения? Операторы 'switch' могут использовать строки без каких-либо проблем. – David
Какая тип, переменная e является типом? Может быть, вам нужен кусокType.ToString() – jdweng