IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

mybase.new implicite ?


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut mybase.new implicite ?
    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 ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  2. #2
    Membre Expert
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 182
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 182
    Par défaut
    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 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Public Class toto
        Inherits System.IO.FileStream
        Public Sub New()
            MsgBox("test")
        End Sub
    End Class
    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).

    Cdt.

  3. #3
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    Citation Envoyé par olsimare
    le constructeur d'une grande majorité de classes dont on peut hériter ne nécessite pas d'initialisation particuliére

    euh là j'en suis pas sur
    selon reflector y a quand meme du code dans beaucoup de new ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Le constructeur de la classe parent est automatiquement appelé lors de la construction d'un objet.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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");
            }
        }
    }
    Oui je sais, c'est en C# mais le fonctionnement est identique.
    Voici le résultat produit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Test1 constructor
    Test1 constructor
    Test2 constructor
    EDIT : En supprimant le constructeur de Test2, on obtient deux fois le message Test1 constructor à l'éxecution.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  5. #5
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    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 ?
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    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 ?
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Tableau dynamique (ou new) implicite ?
    Par nosferatu dans le forum Langage
    Réponses: 6
    Dernier message: 17/04/2013, 12h55
  2. Bug new build ??
    Par rgarnier dans le forum XMLRAD
    Réponses: 4
    Dernier message: 31/01/2003, 10h30
  3. [] Insérer DE et Datareport existant ds new projet
    Par khany dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 10/01/2003, 09h52
  4. [Dev c++ 4] implicite declaration of function "int kbhi
    Par Torpedox dans le forum Dev-C++
    Réponses: 5
    Dernier message: 01/01/2003, 13h37
  5. [Choix] Delphi, MyBase et MyLittleBase
    Par fc dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 28/10/2002, 22h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo