问题
你有一个可能包含一个数字值的字符串,你需要知道该字符串是否包含一个有效的数字。
解决方案
使用任意数字类型的静态TryParse方法。例如,要确定一个字符串是否包含一个double,可使用下列方法。
string str = "12.5";
double result = 0;
if(double.TryParse(str,
System.Globalization.NumberStyles.Float,
System.Globalization.NumberFormatInfo.CurrentInfo,
out result))
{
// 是一个double
}
讨论
本范例展示了如何确定一个字符串是否只包含一个数字值。如果字符串包含一个有效数字,TryParse方法将返回true,而且不会遇到使用Parse方法时的异常。
在实际的上位机编程中会大量使用
if (!int.TryParse(textBox_delay.Text, out var delay))
{
MessageBox.Show("延迟触发的时间输入错误,需要输入整数。");
return;
}
rangeAlarm.Delay = delay;
rangeAlarm.Conditions = textBox_condition.Text;
if (checkBox_max.Checked)
{
if (!double.TryParse(textBox_maxValue.Text, out var max))
{
MessageBox.Show("上限值输入错误,需要输入浮点数。");
return;
}
rangeAlarm.MaxValue = max;
}
else
{
rangeAlarm.MaxValue = double.NaN;
}
if (checkBox_min.Checked)
{
if (!double.TryParse(textBox_minValue.Text, out var min))
{
MessageBox.Show("下限值输入错误,需要输入浮点数。");
return;
}
rangeAlarm.MinValue = min;
}
else
{
rangeAlarm.MinValue = double.NaN;
}
if (checkBox_maxmax.Checked)
{
if (!double.TryParse(textBox_maxmaxValue.Text, out var maxMax))
{
MessageBox.Show("极大值输入错误,需要输入浮点数。");
return;
}
rangeAlarm.MaxMaxValue = maxMax;
}
else
{
rangeAlarm.MaxMaxValue = double.NaN;
}
if (checkBox_minmin.Checked)
{
if (!double.TryParse(textBox_minminValue.Text, out var minMin))
{
MessageBox.Show("极小值输入错误,需要输入浮点数。");
return;
}
rangeAlarm.MinMinValue = minMin;
}
else
{
rangeAlarm.MinMinValue = double.NaN;
}
if (!checkBox_min.Checked && !checkBox_max.Checked && !checkBox_minmin.Checked && !checkBox_maxmax.Checked)
{
MessageBox.Show("至少需要选择一个上限值或是下限值。");
}
else if (checkBox_max.Checked && checkBox_maxmax.Checked && rangeAlarm.MaxMaxValue < rangeAlarm.MaxValue)
{
MessageBox.Show("最大值应该小于极大值!请重新输入。");
}
else if (checkBox_min.Checked && checkBox_minmin.Checked && rangeAlarm.MinMinValue > rangeAlarm.MinValue)
{
MessageBox.Show("最小值应该大于极大值!请重新输入。");
}
else
{
base.DialogResult = DialogResult.OK;
}