2010-10-04 3 views
-1
ComboBoxEdit encoderCombo = 
{ 
    if (slot==1) return cmbEncoder1; 
    else if (slot==2) return cmbEncoder2; 
    else if (slot==3) return cmbEncoder3; 
    else return cmbEncoder4; 
}; 
+0

Quelle langue est ce? .NET n'est pas une langue et si cela est censé être C# alors, bien, beaucoup de choses sont fausses :-) –

+0

C'est C#, ou au moins je le force à être :) –

+2

Eh bien, c'est loin de C#. Commencez par décrire ce que vous essayez de faire, donnez un peu de contexte, quel message d'erreur obtenez-vous, des choses comme ça ... –

Répondre

5

Pourquoi ne pas simplement mettre en ligne le tout et se débarrasser de la méthode anonyme?

ComboBoxEdit encoderCombo = slot == 1 ? cmbEncoder1 : 
          slot == 2 ? cmbEncoder2 : 
          slot == 3 ? cmbEncoder3 : 
          cmbEncoder4; 

Si vous devez vraiment utiliser une méthode anonyme, vous pourriez faire quelque chose de similaire à ceci:

Func<ComboBoxEdit> encoderCombo =() => 
          slot == 1 ? cmbEncoder1 : 
          slot == 2 ? cmbEncoder2 : 
          slot == 3 ? cmbEncoder3 : 
          cmbEncoder4; 

qui va capturer la valeur de slot la fermeture (ce qui peut entraîner un comportement imprévisible que les choses se plus complexe).

+0

Je pratique des méthodes anonymes parce qu'elles ne veulent pas entrer dans mon clavier alors je veux les utiliser autant que possible :) –

+2

@Daniel - "ils ne veulent pas entrer dans mon clavier" ??? Cela n'a donc aucun sens! –

+1

+1 pour l'en ligne. Pas besoin d'une méthode anonyme ici. – tobsen

2

S'il s'agit d'un C#, ce n'est pas une fonction anonyme valide.

Func<ComboBoxEdit> encoderCombo = delegate { 
    if (slot==1) return cmbEncoder1; 
    else if (slot==2) return cmbEncoder2; 
    else if (slot==3) return cmbEncoder3; 
    else return cmbEncoder4; 
}; 
+1

vous pourriez vous débarrasser de elses – nan

1

Ce sera valide si vous remplacez

ComboBoxEdit encoderCombo= 

avec

Func<ComboBoxEdit> encoderCombo =() => 

Remarque - C# 3.0 et au-dessus.

1

Eh bien, vous pourrait faire comme ceci:

ComboBoxEdit encoderCombo = new Func<ComboBoxEdit>(() => 
{ 
    if (slot==1) return cmbEncoder1; 
    else if (slot==2) return cmbEncoder2; 
    else if (slot==3) return cmbEncoder3; 
    else return cmbEncoder4; 
}).Invoke(); 

C'est un peu hideux, bien;)

Questions connexes