mars
2007
En C#, on peut utiliser l’opérateur « ? : ». Par exemple, le code suivant : string value = test == null ? "" : test; équivaut à string value; if (test == null) value = ""; else value = test; En VB, on a la fonction IIf. Cependant, cette fonction retourne un object. Par conséquent, on va probablement devoir caster le résultat, ce qui me fait dire que « ? : » est meilleur que IIf. […]
mars
2007
L’attribut DefaultValue permet, comme son nom l’indique, de définir la valeur par défaut d’une propriété. Le problème, c’est que cette valeur doit être une constante, ce qui limite pas mal (en fait, il y a une surcharge du constructeur, qui prend un type et un string en paramètres, que nous verrons tout à l’heure). Impossible de définir une DefaultValue sur une propriété de type T (where T : class) comme on dirait avec les génériques […]
mars
2007
J’ai eu une surprise avec le DataBinding tout à l’heure. Imaginons le code suivant : public class Class1 { private Class2 _c2; public Class2 C2 { get { return _c2; } set { _c2 = value; } } } public class Class2 { private string _text; public Class2(string text) { _text = text; } public string Text […]
mars
2007
L’attribut DefaultValue est très pratique quand on ne veut pas « pourrir » les .designer et / ou quand on veut modifier la valeur par défaut d’une propriété, cependant, l’utilisation de cet attribut en VB est assez surprenante quand on veut affecter Nothing comme valeur par défaut. En C#, on peut écrire : public class Test { } public class Test2 { [DefaultValue(null)] public Test Test […] } Le problème en VB, c’est […]
mars
2007
J’avais déjà vu différentes façon d’implémenter de façon « thread safety » le design pattern singleton (je vous conseille d’ailleurs ce site), mais je n’avais encore jamais vu celle utilisée dans la classe SR du Framework : private static object InternalSyncObject { get { if (s_InternalSyncObject == null) { object obj2 = new object(); Interlocked.CompareExchange(ref s_InternalSyncObject, obj2, null); } […]
mars
2007
Comme nous l’apprend Chris Lyon, une surcharge de la méthode Collect de la classe GC fait son apparition avec la CTP de Mars.
mars
2007
Je souhaitais obtenir la longueur maximale validée par un pattern de Regex. N’ayant pas trouvé, je l’ai codé moi-même. C’est comme ça que j’ai trouvé l’erreur dans Reflector dont je parlais hier. Mon projet ne permet pas de prendre en compte tous les Regex possible mais j’ai traité ceux dont j’avais besoin sur mon projet professionnel du moment. Au final, j’ai fait un projet test que je trouve bien sympa et qui mélange des notions […]
mars
2007
Vous trouverez ici un très bon article sur les extension methods en VB 9 avec notemment dans la partie Best practice une excellente idée : Utiliser les namespaces des class qu’on veut étendre.
mars
2007
Grâce à C# 3.0, le code suivant : public partial class Form1 : Form { public Form1() { InitializeComponent(); List<Personne> list = new List<Personne>(); list.Add(new Personne("Z", "A")); list.Add(new Personne("A", "Z")); list.Add(new Personne("A", "A")); bindingSource1.DataSource = list; } } public class Personne { private string _nom; private string _prenom; public Personne(string nom, string prenom) […]
mars
2007
Depuis la CTP de Mars de Orcas, la dll System.Core est directement inclue dans les modèles de projet. C’est une excellente chose. Pour rappel, vous avez besoin de cette dll pour utiliser les extension methods.