我有这个片段:
public delegate decimal CalculerMoyenneGenerale(decimal a, decimal b);
Func<decimal, decimal, decimal, decimal> fonc1 = (a, b, c) => (a + b * 2 + c * 2) / 5;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
decimal moyenne1 = decimal.Parse(moy1.Text);
decimal moyenne2 = decimal.Parse(moy2.Text);
decimal moyenne3 = decimal.Parse(moy3.Text);
decimal moyenneBac = decimal.Parse(moybac.Text);
CalculerMoyenneGenerale calcul;
decimal moyenneAnnee = fonc1.Invoke(moyenne1, moyenne2, moyenne3);
calcul = (moyenneAnnee < moyenneBac) ? CalculerSansVightcinq : CalculerAvecVightcinq;
General.Text = calcul(moyenneAnnee, moyenneBac).ToString();
}
public decimal CalculerSansVightcinq(decimal annee, decimal bac)
{
return bac;
}
public decimal CalculerAvecVightcinq(decimal annee, decimal bac)
{
return (bac * 75 + annee * 25 ) / 100;
}
我在这一行有一个问题:
calcul = (moyenneAnnee < moyenneBac) ? CalculerSansVightcinq : CalculerAvecVightcinq;
它没有接受这个三元表达式(铸造除外)。如果我通过ìf else
语句更改此表达式,则可以正常工作。
答案 0 :(得分:-1)
使用calcul = (moyenneAnnee < moyenneBac) ? (CalculerMoyenneGenerale)CalculerSansVightcinq : CalculerAvecVightcinq;