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

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: So beschränken Sie einen Parameter so, dass er nur Methoden akzeptiert, die yield enthalten

by Guest » 04 Jan 2025, 06:38

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>

Top