【发布时间】:2018-06-08 21:00:37
【问题描述】:
我想做这样的事情-
using System;
class MainClass
{
public static void Main ()
{
bool? input;
Console.WriteLine ("Are you Major?");
input = bool.Parse (Console.ReadLine ());
IsMajor (input);
}
public static void IsMajor (bool? Answer)
{
if (Answer == true) {
Console.WriteLine ("You are a major");
} else if (Answer == false) {
Console.WriteLine ("You are not a major");
} else {
Console.WriteLine ("No answer given");
}
}
}
这里如果用户没有回答,只是按回车,变量输入必须存储值null,输出必须是No answer given。
在我的代码中,true 和 false 的输入工作正常。
但是如果没有输入并且按下回车,编译器会抛出异常
System.FormatExeption has been thrown
String was not recognized as a valid Boolean
那么如何获取存储在变量input 中的null 值,以便输出为No answer given
这里,
问题String was not recognized as a valid boolean C#
显然不是重复的,因为它不想直接从键盘获取空输入。如果不能接受这样的输入,那么可空类型有什么用处,因为也有解决方法?
【问题讨论】:
-
将控制台输入读入字符串,然后使用 bool.TryParse.
-
但这是一种解决方法。在可空数据类型的情况下,是否可以直接输入空值?
-
不,显然不是,否则你的代码已经可以工作了。这正是 TryParse 存在的原因。
-
@mjwills 不,它不是重复的,我想从键盘直接输入空值
标签: c# exception boolean nullable keyboard-input