L'auteur
Gregory Adam Belgique Membre Actif (personne physique) # 0000001121 enregistré le 04/06/2006
Fiche personnelle
Note des membres
pas de note
|
Contributions > 80 dotnet > 01 C#
Comment implementer un Do Case a la foxpro
# 0000000868
ajouté le 03/11/2013 12:09:12 et modifié le 03/11/2013
consulté 9705 fois
Niveau
débutant
Le téléchargement des pièces jointes est limité aux membres Veuillez vous identifier ou vous inscrire si vous n'avez pas encore de compte ...
|
Description |
Exemple et classe ci-dessous |
Code source : |
static class Test_Switch
{
internal static void Go()
{
int i = 7, j = 0;
new Switch()
.Case(() => i == 1, delegate { j = -1; })
.Case(() => i == 2, delegate { j = -2; })
.Case(() => i == 3, delegate { j = -3; })
.Default(delegate { j = 1000; })
.Execute();
Console.WriteLine(" j = {0}", j); // 1000
Console.ReadLine();
}
}
class Switch
{
bool HadDefault = false;
List<Tuple<Func<bool>, Action>> Cases = new List<Tuple<Func<bool>,Action>>();
internal Switch Case(Func<bool> predicate, Action action)
{
CheckDefault();
if (predicate == null)
throw new ArgumentNullException("predicate");
CheckAction(action);
Cases.Add(new Tuple<Func<bool>, Action>(predicate, action));
return this;
}
internal Switch Default(Action action)
{
CheckDefault();
CheckAction(action);
Cases.Add(new Tuple<Func<bool>,Action>(() => true, action));
HadDefault = true;
return this;
}
internal void Execute()
{
foreach( var item in Cases )
if( item.Item1() )
{
item.Item2();
break;
}
}
void CheckDefault()
{
if( HadDefault )
throw new Exception("Sorry, already a Default");
}
void CheckAction(Action action)
{
if( action == null )
throw new ArgumentNullException("action");
}
}
|
Commentaires |
|
OUFFFFFF .... s'en en prend du code pour un simple
do case
case
otherwise
endcase