1

我有一组 RadioButtons,每个都有一个标签名称。我想得到它。如果没有选择 RadioButton,则它为空。我只完成了其中的一部分。

string sGender = 
    groupBox4.Controls.OfType<RadioButton>().Where(r => r.Checked)
        .FirstOrDefault().Tag.ToString();

更新

如果没有选中任何按钮,它可能会出现异常。

4

1 回答 1

2

问题到底是什么?这里有错误吗?它是什么,在哪里?您需要确保尽可能清晰准确地指定您的问题。

猜测虽然.FirstOrDefault()可以返回 null 所以我怀疑你在那里得到了一个空引用异常。在继续之前,您需要检查一下...

string sGender;
var radioButton = groupBox4.Controls.OfType<RadioButton>()
                    .Where(r => r.Checked).FirstOrDefault();
if (radioButton == null)
{
    sGender = "";
}
else
{
    sGender = radioButton.Tag.ToString()
}

既然你已经问过了,你可以使用三元运算符来避免使用 if 这个词。在任何实际意义上,这仍然是一个有效的 if 语句。您可以使用它来替换我上面给出的 if 语句,或者如果您真的不顾一切,您可以做一个衬里......我真的会选择最可读的,因为其他选项真的不会添加任何东西并且会失去可读性...

string sGender = groupBox4.Controls.OfType<RadioButton>().Any(r => r.Checked)?
    groupBox4.Controls.OfType<RadioButton>().Where(r => r.Checked)
        .First().Tag.ToString(): "";
于 2012-07-27T13:20:03.223 回答