gpt4 book ai didi

c# - 在执行 C# 之前检查 linq 操作是否为空

转载 作者:太空宇宙 更新时间:2023-11-03 19:56:37 25 4
gpt4 key购买 nike

我有一个带有 60 个单选按钮的 Win 窗体。我想使用以下代码从选中的单选按钮中获取文本:

private void button1_Click_1(object sender, EventArgs e)
{

string[] boxes = new string[30];
string[] names = new string[30];

for (int i = 1; i < boxes.Length; i++)
{
var label = this.Controls.Find("lb" + i, true)[0];

var panelcontr = this.Controls.Find("panel" + i, true)[0] as Panel;
var panels = panelcontr;

var p = panels.Controls.OfType<RadioButton>()
.FirstOrDefault(r => r.Checked).Text;

boxes[i] += p;
names[i] += label.Text;
tobeWritten += names[i] + boxes[i] + ",";
textBox1.Text = "Anamnese(" + tobeWritten + ")";

}
}

它工作得很好,但问题是,当只有一个单选框未选中时,我在调试期间收到警告。我知道为什么会出现警告,但我希望程序不要停止。

我要问的是:是否可以创建一个出现的 MessageBox,当我没有选中一个 radioButton 时,例如说“你必须分配每个按钮”。我单击“确定”按钮,然后我可以检查未检查的按钮。我尝试了 an other question at StackOverflow 的建议但没有成功,因为函数 panels.Controls.OfType<RadioButton>()在查询之前执行。

最佳答案

如果没有选中 RadioButton,您将在此处得到一个 NullReferenceException:

var p = panels.Controls.OfType<RadioButton>()
.FirstOrDefault(r => r.Checked).Text;

因为 FirstOrDefault 返回 null 因为 RadioButton 是引用类型。然后你不能访问它的 Text 属性。那么如何避免呢?

存储结果并在使用前检查它是否为null:

RadioButton firstCheckedRadioButton = panels.Controls.OfType<RadioButton>()
.FirstOrDefault(r => r.Checked);
if(firstCheckedRadioButton != null)
{
string text = firstCheckedRadioButton.Text;
// ...
}

关于c# - 在执行 C# 之前检查 linq 操作是否为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33041740/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com