这是我一直试图制作的刽子手控制台应用程序游戏的一部分(缩减以显示错误):
string TheWord = "dog";
char?[] ThusWord = new char?[TheWord.Length];
// Display the underscores of missing letters. And also the mentioned letters.
foreach (char c in ThusWord)
{
Console.Write("{0} ", ThusWord[c].HasValue ? ThusWord[c] : "_");
}
我希望它显示字母/下划线,以向用户显示已经猜到的内容/什么没有。在这种一般格式" _ _ _ a _ _" (' a'是一封猜测的信件,下划线代表没有被猜到的内容。
但我现在收到的错误是:
foreach (char c in ThusWord)
错误:
未处理的类型' System.InvalidOperationException'发生在mscorlib.dll中 附加信息:Nullable对象必须具有值。
我猜测它可能与我使用char数组的事实有关。
答案 0 :(得分:3)
你不应该直接将char?
转换为char
(它可能为空,因此你会得到例外)。 ThusWord[c]
也是错误的。 c
是char本身。您使用索引器[int]
来获取字符串指定位置的char。
foreach (char? c in ThusWord)
{
if (c.HasValue)
{
Console.Write(c + " ");
}
else
{
Console.Write("_ ");
}
}