В принципе, я хочу делегата, который может вернуться сам. У меня есть очень простое сокращение того, что я теоретически хочу ниже:C# делегат, который возвращает себя
int i =0;
var x =() =>
{
if (i > 10)
return null;
++i;
Debug.Log("keep going");
return x;
};
var y = x;
while ((y = y()) != null) ;
Ожидаемый результат конечно видит «будет держать» 10 раз в консоли. Я просто хочу знать, возможно ли это или нет на этом языке (я знаю, что могу достичь той же цели с циклом for). Например, тривиально это сделать в JavaScript, используя очень похожий код, как описано выше, но я не могу заставить компилятор сотрудничать с C#. Я думаю, что неудача заключается в невозможности правильно описать тип для «x» (Func<Func<Func...
, вы вроде бы хотите что-то вроде прямого объявления).
вы пробовали это ваш сам –
Есть ли реальный мир случай, когда этот вид кода может быть полезным? –
@JulieShannon Да, я пробовал точный код выше, и он жалуется на «var» (возможно, я должен упомянуть, что я запускаю Mono в Unity (совместимость с .NET 2), поэтому, возможно, приведенный выше код совершенно легален в более новых версиях C# –