bonjour
je voulais savoir si dans une classe hérité le mybase.new était implicite sans le public sub new
ou s'il fallait le spécifier ...
Version imprimable
bonjour
je voulais savoir si dans une classe hérité le mybase.new était implicite sans le public sub new
ou s'il fallait le spécifier ...
Bonjour.
Je ne pense pas que le mybase.new soit implicite mais qu'en fait le constructeur d'une grande majorité de classes dont on peut hériter ne nécessite pas d'initialisation particuliére
--> Le New entraîne donc simplement la création de l'instance sans rien de plus.
Quand le mybase est nécessaire (pas de sub new sans argument), vs 2005 le dit de suite...
Exemple :
Là le mybase.new est obligatoire car le FileStream n'a pas de constructeur sans argument (autrement dit, pas de constructeur sans initialisation de quelque chose).Code:
1
2
3
4
5
6
7 Public Class toto Inherits System.IO.FileStream Public Sub New() MsgBox("test") End Sub End Class
Cdt.
Citation:
Envoyé par olsimare
euh là j'en suis pas sur
selon reflector y a quand meme du code dans beaucoup de new ...
Le constructeur de la classe parent est automatiquement appelé lors de la construction d'un objet.
Oui je sais, c'est en C# mais le fonctionnement est identique.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 using System; namespace ApplicationTest { class Program { static void Main(string[] args) { Test1 a = new Test1(); Test2 b = new Test2(); Console.ReadLine(); } } class Test1 { public Test1() { Console.WriteLine("Test1 constructor"); } } class Test2 : Test1 { public Test2() { Console.WriteLine("Test2 constructor"); } } }
Voici le résultat produit :
EDIT : En supprimant le constructeur de Test2, on obtient deux fois le message Test1 constructor à l'éxecution.Code:
1
2
3 Test1 constructor Test1 constructor Test2 constructor
ca reste un peu illisible le C# ^^ bien content de faire du vb
enfin c'est rassurant
mais alors pourquoi des fois VS demande qu'on le fasse explicitement ?
Parce que la classe de base ne définit pas de constructeur sans argument accessible publiquement.
PS : Tu ne vas pas me dire que le code que j'ai posté est illisible tout de même, je ne fais pas de VB.NET mais pour un programme aussi simple, ça ne doit pas changer du tout au tout, si ? :D
oui c'est lisible mais c'est vraiment un syntaxe de m**** pas intuitive sur le coup
class Test2 : Test1
est quand meme moins évident que
class Test2
inherits Test1
ensuite Publis Sub New on comprends mieux que c'est l'instanciation par rapport à
public Test2()
et puis je préfère les begin et end que { et } qui font un paté de symboles dans une page
+1 privilégie donc la deuxieme syntaxe ^^Citation:
Envoyé par sperot51
+2 je ne savais meme pas que cette ecriture aussi ambigue existait 8OCitation:
Envoyé par sperot51
+3 ca c'est sur mais il faut faire avec !Citation:
Envoyé par sperot51
Ouais bon c'est pas la peine de commencer à troller non plus les gars. :roll:
Je disais simplement à sperot51 qu'il ne faut pas être intégriste non plus, la syntaxe C# est différente, mais la question de savoir si c'est intuitif ou pas, n'est pas importante. Tout dépend du langage avec lequel tu as commencé. :D
On ne troll pas, j'approuve tout simplement la réaction de Sperot51 qui est la meme que la mienne.Citation:
Envoyé par SaumonAgile
Oui c'est différent mais il est clair que je trouve le C# beaucoup moins intuitif que le vb.net mais c'est une question de gout ;)Citation:
Envoyé par SaumonAgile
Bref, c'est pas le sujet ici.
As t-on répondu à ta question Sperot51 ? Si oui, don't forget to put the tag :resolu: Thanks
je ne troll pas non plus, je dis pas que les dev c# sont des c***
je dis que le c et ces dérivés j'y suis allergique
Oki. Chacun son point de vu ;)