février
2007
En VB, on a la possibilité d’implémenter une méthode d’une interface en private / protected / friend et surcharger les méthodes pas en C#. Public Interface ITest Sub Test() End Interface Public Class Class1 Implements ITest Protected Overridable Sub Test() Implements ITest.Test Console.WriteLine("Test1") End Sub End Class Public Class Class2 Inherits Class1 Protected Overrides Sub Test() […]
février
2007
J’ai fait une découverte intéressante aujourd’hui en utilisant un StrongNameIdentityPermissionAttribute. Sur les attributs, afin d’éviter de devoir créer 50 constructeurs, on peut utiliser un équivalent des object initializer : public class Class1 { [MyAttribute(Test1 = "un")] public void Test1() { } [MyAttribute(Test2 = "deux")] public void Test2() { } [MyAttribute(Test1 = "un", Test2 = "deux")] […]
février
2007
Quand on duplique une déclaration, on a l’erreur de suite en VB alors qu’il faut compiler pour l’avoir en C#. En revanche, les erreurs de duplication de déclaration en VB sont surprenantes dans le sens où sur une propriété ou sur un champ, ce n’est pas le même qui a l’erreur : sur la propriété, c’est le premier alors que sur le champ, c’est le second. En C#, c’est tout le temps le premier :
février
2007
Les extension methods permettent d’écrire o.MyMethod() à la place de MyClass.MyMethod(o) dans (le cas d’une méthode static). En VB, il existe un intermédiaire : o.MyMethod(o). En fait, on a accès aux méthodes statiques du type de o directement (le code IL est bien MyClass.MyMethod(o)). Sous VS 2005, on a un warning quand on fait des choses comme ça. En effet, autant cela peut être pratique, autant cela peut permettre d’écrire du code assez surprenant. Voici […]
février
2007
Bien que je continue de préférer le C#, je dois reconnaître que Vincent et Akop m’ont fait découvrir deux choses intéressantes en VB qui n’existent à priori pas en C# : Les handles : Private Sub Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click, Button2.Click DirectCast(sender, Button).Text = "ok" End Sub Dans ce cas et le click sur Button1 et le click sur Button2 affecteront « ok » au bouton cliqué. […]
février
2007
Contrairement à ce que dit msdn (http://msdn2.microsoft.com/fr-fr/library/system.enum.isdefined(VS.80).aspx), pour utiliser les méthodes static de la classe Enum, il ne faut pas faire « returnValue = Enum.IsDefined(enumType, value) », pour utiliser la méthode Isdefined, mais « [Enum].IsDefined(enumtype, value) ». Sur ce point Reflector aussi se plante. Heureusement ce n’est pas le cas de l’intellisence. J’ai envoyé un message pour le signaler.