Я не уверен, чего вы на самом деле пытаетесь достичь, но вам не нужно Func<T>
для вызова функции.Просто используйте этот синтаксис:
protected void Page_Load(object sender, EventArgs e)
{
int k = IntProducer();
// Todo: Do more with k here
}
public int IntProducer()
{
return x++;
}
Если вы обнаружите, что понимаете это очень хорошо и чувствуете, что на самом деле нуждаетесь в Func<T>
, тогда вы можете просто назначить его иназовите его как это была обычная функция:
protected void Page_Load(object sender, EventArgs e)
{
Func<int> theFunc = IntProducer;
// Todo: Do some stuff here
int k = theFunc(); // Calls `IntProducer`
// Todo: Do more with k here
}
public int IntProducer()
{
return x++;
}
Это действительно полезно, только если вы хотите переключить метод, на который указывает theFunc
во время работы, вы хотитепередать его другому методу, или вы даже не хотите беспокоиться о названии IntProducer
, а просто хотите определить его напрямую (как ваша лямбда в исходном коде).
скод в вашем вопросе, я бы выбросил лямбду, и не стал бы беспокоиться с Func<T>
.Я бы просто позвонил IntProducer
напрямую, как код в верхней части моего ответа.
Кстати, это лямбда-код в вашем исходном коде:
() => { return k; };
Это в основном работает какбезымянная функция.В этом случае эта функция не принимает параметров.