2011-06-24 234 views
1

好吧,我问了这个question,并得到了优秀的代码示例作为答案。代码有效,但我不明白代码的含义。有人能指出我的方向以便进一步阅读以了解代码。这里是获取在组合框中选中的单选按钮的代码:这段代码是什么意思?

Dim rButton As RadioButton = GroupBox1.Controls _ 
    .OfType(Of RadioButton)() _ 
    .Where(Function(r) r.Checked = True) _ 
    .FirstOrDefault() 

好吧,那我不明白的部分是.OfType.Where.FirsrOrDefault

UPDATE:

谢谢这些东西是LINQ

+0

在你之前的话题中,你问过如何替换一堆if,看起来你已经选择了。但是有什么意义呢?现在你知道哪一个检查了,用不同的方式,现在... – dbasnett

+0

@dbasnett:我以前的问题目的是探索是否有更聪明的方法来检查被检查的单选按钮。我试图使用回答者给出的代码示例。它的工作原理和非常感谢。但我不明白代码。具体来说,我甚至不知道“.OfType”是什么以及它来自哪里。所以,我开始了这个问题。从我的角度来说有什么不对? – Predator

+0

不可以。我的观点是现在你知道哪个按钮被检查了你要做什么。 – dbasnett

回答

6

此代码选择一组按钮中的第一个选中的单选按钮。让我们遍历代码:

  1. Dim rButton As RadioButton = GroupBox1.Controls _

    选择组形式的控制

  2. OfType(Of RadioButton)() _

    但仅来自该组

  3. Where(Function(r) r.Checked = True) _

    单选按钮

    那些已经签

  4. .FirstOrDefault()

    返回如果没有进行检查的第一个或NULL。

+0

好的,我选择这个答案是因为它有详细的解释。我已经提出了所有其他答案。非常感谢! – Predator

7

该代码几乎读取它正在做什么:从控件GroupBox1是类型RadioButton,取那些单选按钮被检查的地方,然后取第一个(或者如果没有的话,则为null)。

在英语单词组中的所有单选按钮中,找到第一个选中的单选按钮,如果没有,则返回null

该方法来自LINQ

+0

我的意思是什么是名称/技术以下几点:'.OfType,.Where,.FirsrOrDefault'?我对这些事情一无所知,并希望了解它。你能指点我哪里了解更多? – Predator

+0

@Predator:这些是LINQ方法。 LINQ是你想要阅读的内容。 – jason

+0

好吧,我明白了:) – Predator

3

这是VB的LINQ API。基本上,您提到的每种方法都是选择器,并且正在返回查询的结果。退房this page一吨的例子:

2

基本上,它会通过在GroupBox1是OfType单选按钮,并他们检查了控制,抓住首先结果或默认/无如果没有结果。