2011-06-24 425 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單選按鈕,並他們檢查了控制,抓住首先結果或默認/無如果沒有結果。