为了追求优雅的编码,我想避免不得不捕捉一个异常,当我尝试验证Textbox的Text字段是一个整数时,该异常可能会抛出。我在寻找类似于TryGetValue for Dictionary的东西,但是Convert类似乎没有提供任何东西,除了例外。

有什么可以退还给我检查的吗?

明确一点,我想避免这样做

TextEdit amountBox = sender as TextEdit;
if (amountBox == null)
    return;
try
{
    Convert.ToInt32(amountBox.Text);
}
catch (FormatException)
{
    e.Cancel = true;
}


赞成这样的事情:

TextEdit amountBox = sender as TextEdit;
if (amountBox == null)
    return;
e.Cancel = !SafeConvert.TryConvertToInt32(amountBox.Text);


谢谢!

最佳答案

int.TryParse是你的朋友...

TextEdit amountBox = sender as TextEdit;
if (amountBox == null)
    return;
int value;
if (int.TryParse(amountBox.Text, out value))
{
    // do something with value
    e.Cancel = false;
}
else
{
    // do something if it failed
    e.Cancel = true;
}

...顺便说一下,大多数原始值类型都有一个静态的.TryParse(...)方法,其工作方式与上述示例非常相似。

关于c# - 在验证用于数字输入的文本框时,有没有一种方法可以避免引发/捕获异常?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3061968/

10-09 04:00