So beschränken Sie einen Parameter so, dass er nur Methoden akzeptiert, die yield enthaltenC#

Ein Treffpunkt für C#-Programmierer
Guest
 So beschränken Sie einen Parameter so, dass er nur Methoden akzeptiert, die yield enthalten

Post by Guest »

Ich habe zwei Arten von Methoden. Einer gibt einen IEnumerator zurück, der andere gibt einen IEnumerator zurück:

Code: Select all

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);
}
Ist es möglich, zu erkennen, ob es sich bei einer Methode um die eine oder andere handelt, oder sogar die Verwendung des nicht nachgebenden Typs zu verweigern?

Code: Select all

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)
}
Ich kenne die Problemumgehungen (z. B. könnte ich einfach die nicht nachgebende Methode „Yielding“ verwenden), aber ich möchte Fehler vermeiden, deshalb war ich neugierig, ob ich das durch eine Typbeschränkung erkennen könnte.< /P>

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post