Как ограничить параметр, чтобы он принимал только методы, содержащие доходностьC#

Место общения программистов C#
Ответить
Anonymous
 Как ограничить параметр, чтобы он принимал только методы, содержащие доходность

Сообщение Anonymous »

У меня есть два типа методов. Один возвращает IEnumerator, другой возвращает IEnumerator:

Код: Выделить всё

public IEnumerator NonYielding_Method( float foo )
{
return YieldingLazyEvaluated_Method(foo);
}

public IEnumerator YieldingLazyEvaluated_Method( float foo )
{
yield return null;
}

public void Queue( IEnumerator seq )
{
myList.Add(seq);
}
Можно ли определить, является ли метод тем или иным, или даже запретить использование невыдающего типа?

Код: Выделить всё

public void Test()
{
Queue( YieldingLazyEvaluated_Method(1F) );  //works already, lazily evaluated
Queue( NonYielding_Method(1F) );            //i need this be denied by compiler error (due to it being eagerly evaluated and therefore instantly executed)
}
Я знаю обходные пути (например, я мог бы просто создать невыдающий метод, уступающий), но я хочу избежать ошибок, поэтому мне было любопытно, смогу ли я уловить это с помощью какого-либо ограничения типа.< /п>

Подробнее здесь: https://stackoverflow.com/questions/793 ... tain-yield
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»