Rajeev Raj Ответов: 2

Он показывает синтаксическую ошибку " выход не объявлен. он может быть недоступен из-за своего уровня защиты"


это мой код, который я собираюсь преобразовать в vb.net. Пожалуйста, помогите мне

public IEnumerable<DateTime> GetAllQuarters(DateTime current, DateTime past)
   {
       var curQ = (int)Math.Ceiling(current.Month / 3.0M);
       var lastQEndDate = new DateTime(current.Year, curQ * 3, 1).AddMonths(-2).AddDays(-1);

       do
       {
           yield return lastQEndDate;
           lastQEndDate = lastQEndDate.AddMonths(-3);
           lastQEndDate = new DateTime(lastQEndDate.Year, lastQEndDate.Month, DateTime.DaysInMonth(lastQEndDate.Year, lastQEndDate.Month));
       } while (lastQEndDate >= past);
   }


Что я уже пробовал:

Общественные функции GetAllQuarters(тока как datetime, последние как datetime) как IEnumerable(типа datetime)
Dim curQ = CInt (матем.Потолок (ток.Месяц / 3D))
Dim lastQEndDate = New DateTime (current.Год, curQ * 3, 1).AddMonths(-2).AddDays(-1)

Делать
доходность возврат lastQEndDate
lastQEndDate = lastQEndDate.AddMonths(-3)
lastQEndDate = New DateTime(lastQEndDate.Год, последняя дата.Месяц, Дата И Время.DaysInMonth(lastQEndDate.Год, последняя дата.Месяц))
Цикл While lastQEndDate >= past
Конечная Функция

2 Ответов

Рейтинг:
1

Member 8446650

это просто отдача, а не отдача.

И функция должна быть объявлена

Public Iterator Function GetAllQuarters


Рейтинг:
0

Kornfeld Eliyahu Peter

Проверьте синтаксис Yield для VB.NET: Оператор Yield (Visual Basic)[^]
Доходность должна быть записана с капиталом Y и не требует возврата...Также проверьте порядок высказываний (вероятно, выход должен быть последним)...


Brian1492

Дело не в этом.