Можно создать дубликат:
Yield In VB.NETМожно ли реализовать возврат доходности для функций IEnumerable в VB.NET?
В 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
Использование yield напоминает мне о трубопроводах в том, что код вызова может начинать итерирование через ienumerable * before * функция, возвращающая ienumerable, завершена. Очень круто! –
Это ужасный пример, потому что вы вопиюще не нуждаетесь в том, чтобы что-то вроде этого: в чем смысл ленивого определения нарушения правил? Заполните их все в списке и сделайте с ним. Это не значит, что yeild не полезен, но это всего лишь плохой пример. – piers7