我发帖问选择题中,单选按钮选中问题时,版主给我了这么两行代码:
var rb = groupBox1.Controls.OfType<RadioButton>().SingleOrDefault(x => x.Checked);
textBox3.Text = "正确答案是:" + chuandishuju.daan.Trim() + "     回答"+(rb != null && rb.Name.Last() - '1' == chuandishuju.daan.ToUpper().Trim().First() - 'A')?"正确!":"错误!" ;
现在大体意思知道了,但是里面具体代码什么意思不懂。不懂的是:
groupBox1.Controls.OfType<RadioButton>().SingleOrDefault(x => x.Checked)和
rb != null && rb.Name.Last() - '1' == chuandishuju.daan.ToUpper().Trim().First() - 'A'。
为什么这么写?
如果有相关资料的链接,请给一个。我虽然也是学计算机的,但是已经多年没编程了,当年就没学好,也没学过c#,只能靠以前学的c和c++基础自己摸索,所以各位还是把我当小白看吧。谢谢。c#

解决方案 »

  1.   

    找到 在GroupBox1中的控件 类型为 RadioButton 的控件 并且为选中状态
      

  2.   

    groupBox1.Controls.OfType<RadioButton>().SingleOrDefault(x => x.Checked)groupBox1.Controls.OfType<RadioButton>()返回groupBox1中的所有RadioButton
    SingleOrDefault从中找出1个或0个满足条件:x => x.Checked,即选中的那个。
    这个表达式返回一个RadioButton(找到)或者返回null(找不到),如果有多个满足条件,则丢出异常。
    if (rb != null && rb.Name.Last() - '1' == chuandishuju.daan.ToUpper().Trim().First() - 'A')
    如果找到(rb != null)并且
    找到的那个的名字的最后一个字母的ascii值减去'1'的ascii值(rb.Name.Last() - '1')等于
    答案的那个字母的ascii值减去'A'(chuandishuju.daan.ToUpper().Trim().First() - 'A')
    那么答对了。
    我们看ASCII表:
    '4' - '1' = 'D' - 'A' = 3
    '3' - '1' = 'C' - 'A' = 2
    '2' - '1' = 'B' - 'A' = 1
    '1' - '1' = 'A' - 'A' = 0
      

  3.   

    函数方法不懂可以在VS中右键点击方法->转到定义,即可看到方法声明和解释,语法不懂那就看看基础教程,逻辑问题应该自己分析解决了。