mars
2007
Désolé Florent, c’est encore du VB J’ai eu une énorme surprise aujourd’hui. J’avais une propriété de type IEnumerable et je voulais faire un GetType sur Value. En C#, cela se fait très bien : class Program { static void Main(string[] args) { List<string> l = new List<string>(); Test.Toto = l; Console.ReadLine(); } } public class Test { public static IEnumerable Toto { […]
mars
2007
Quand on lit des articles sur les object initializer, on voit systèmatiquement le cas de l’initialisation des propriétés et fréquemment le cas de l’initialisation d’une liste. Ce qu’on voit en revanche beaucoup plus rarement, c’est l’application des object initializer sur un dictionnaire. Pourtant, là aussi, il y a eu des efforts de fait. Ainsi, pour définir le contenu d’un dictionnaire en C# 3.0, on peut faire ceci : var dico = new Dictionary<string, string> { […]
mars
2007
Il y a plusieurs manières d’écrire dim toto as Test = new Test() On peut écrire : dim toto as Test = new Test Si on ne passe pas de paramètres, les parenthèses deviennent facultatives. On peut éviter de répéter deux fois le type (dim toto as Test = new Test()). En VB, on peut écrire : dim toto as new Test Sympa
mars
2007
Pour déduire la longueur maximale d’un champ à partir du Regex qu’il doit respecter, on a besoin du RegexTree. Le problème est que cette classe est internal au framework. Il existe donc deux possibilités pour récupérer le RegexTree : recoder le parse du pattern afin d’obtenir le RegexTree. Utiliser la réflection pour taper dans la classe internal au framework. En effet, la réflection permet de d’appeler des classes ou des membres de celles-ci même si […]
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
Pour ceux qui n’en sont pas convaincus, je vous conseille le cet article.
mars
2007
C’est une excellente initiative de Microsoft que j’ai appris via la newsletter msdn. Vous pouvez maintenant rajouter du contenu dans la librairie msdn.
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 […]