avril
2007
C’est en tout cas ce que laisse penser le post de Luke Hoban. Les méthodes partial qu’est-ce que c’est ? Non vous ne pouvez pas définir à deux endroits différents le coprs d’une même méthode. En fait, c’est un peu comme les .h et .c (ou .cpp). C’est à dire que dans un fichier vous définissez la signature de la méthode et dans l’autre, vous définissez réellement la méthode. Cela vous permet dans le fichier […]
avril
2007
Le 23, je vous disais que je m’étais codé une Action qui prenait deux paramètres. Ce sera bientôt obsolète. En effet, Luke Hoban m’a informé que, à la manière des Func<> qui peuvent prendre jusqu’à 4 paramètres, les actions allaient également prendre jusqu’à 4 résultats dès la prochaine version.
avril
2007
C’est bien dommage mais la classe .Designer.cs générée par un resx est internal (de même que ses propriétés). De plus, comme à chaque fois avec les .designer, si vous modifiez ce fichier et que vous remodifiez derrière votre .resx, les modifs effectuées sur le .designer.cs seront perdues. Il faudra donc encapsuler cela dans une classe (static) afin de le rendre accesible à d’autres assemblies. Pour VB, c’est encore pire puisque les fichiers de ressources se […]
avril
2007
Bien qu’on ait pu remarquer une forte amélioration de l’utilisation du compilateur C# avec le framework .Net 3.5, il n’en demeure pas moins que le compilateur est encore sous-exploité (du moins dans la CTP de Mars 2007). J’avais émis, dans mon article sur le sujet, un certain nombre de regret. Voici un exemple supplémentaire à mon sens bien regrettable : public class C1 { } public class C2 { } Je ne peux pas faire […]
avril
2007
En C#, il existe un mot clé default. Ce mot clé renvoit le type par défaut du type qu’il prend en paramètre. En C# 2.0, il existe un opérateur ?? qui est en quelque sorte une extension de ?. Au lieu de partir du principe que si le premier paramètre de l’opérateur ?? est null, on renvoit le deuxième paramètre, on aurait pu l’étendre en partant du principe que la condition ne se fait plus […]
avril
2007
En C#, quand on veut indexer une classe, il suffit de rajouter la propriété suivante : public object this[object key] En VB, il faut utiliser le mot clé Default : Default Public ReadOnly Property Item(ByVal key As Object) As Object Dans le cas d’une classe générique implémentant une interface non générique, on peut souhaiter que la propriété d’indexation soit plus fortement typée dans la classe que dans l’interface : class Test<T> : ITest { […]
avril
2007
En plus de EventHandler, vous trouverez dans le Framework 3.5 le EventHandler générique qui vous évite de définir un délégué pour passer un EventArgs particulier. Dans le Framework 3.5, beaucoup de choses permettent de se passer de l’écriture des delegates. Je pense notamment à Func<> et Action<>. Func prend en paramètre le type de retour et peut prendre jusqu’à 4 types d’arguments (libre à vous d’en définir plus). Quand à Action, il ne prend qu’un […]
avril
2007
Nicholas Schrock a trouvé un bug fort surprenant concernant les objects initializers. public class Car { public int Id { get; private set; } } class Program { static void Main(string[] args) { Car c1 = new Car() { Id = 1 }; // works to my surprise Car c2 = new Car(); c2.Id = 2; […]
avril
2007
Dans le cas d’un délégué anonyme où on utiliserait pas les paramètres, inutiles de les préciser : class Program { static void Main(string[] args) { Test t = new Test(); t.MyEvent += delegate { Console.WriteLine("toto"); }; t.Toto(); Console.ReadLine(); […]