可能重複:
Yield In VB.NET我可以在VB.NET中實現IEnumerable函數的yield return嗎?
在C#中,編寫返回IEnumerble<>
一個功能時,您可以使用yield return
返回枚舉的單個項目和yield break;
表示沒有剩餘項目。什麼是做同樣的事情的VB.NET語法?
從NerdDinner代碼的示例:
public IEnumerable<RuleViolation> GetRuleViolations() {
if (String.IsNullOrEmpty(Title))
yield return new RuleViolation("Title required","Title");
if (String.IsNullOrEmpty(Description))
yield return new RuleViolation("Description required","Description");
if (String.IsNullOrEmpty(HostedBy))
yield return new RuleViolation("HostedBy required", "HostedBy");
if (String.IsNullOrEmpty(Address))
yield return new RuleViolation("Address required", "Address");
if (String.IsNullOrEmpty(Country))
yield return new RuleViolation("Country required", "Country");
if (String.IsNullOrEmpty(ContactPhone))
yield return new RuleViolation("Phone# required", "ContactPhone");
if (!PhoneValidator.IsValidNumber(ContactPhone, Country))
yield return new RuleViolation("Phone# does not match country", "ContactPhone");
yield break;
}
這convert C# to VB.NET tool給出了一個 「YieldStatement是不受支持的」 錯誤。
請注意,屈服不會返回,至少在大多數人意味着返回的意義上(儘管它是在引擎蓋下實現的)。另外,你不需要在那裏獲得收益。此外,您可能想考慮將該代碼轉換爲產生枚舉的RuleViolation對象,以產生Func委託的枚舉。 –
yfeldblum
2009-05-17 22:02:46
使用yield讓我想起那個調用代碼中的管道可以通過*之前*啓動遍歷所有可返回的功能完成運行的功能。很酷! – 2009-05-17 22:15:09