Question

Je creusais récemment sur de nouvelles méthodes partielles en C # 3.0, j'ai compris l'utilisation de la classe partielle, qu'il pourrait être repris en fichier multiple, contenant la définition et d'autres déclarations, mais je voulais savoir, j'ai créé une classe partielle comme ci-dessous :

in class1.cs
partial class A
{
   partial void Method();
}
in class2.cs
partial class A
{
  partial void Method()
  {
    Console.WriteLine("Hello World");
  }
}
now in class3.cs
class MainClass
{
  static void Main()
  {
    A obj = new A();
    obj.Method(); //Here i cannot call the "Method" method.
  }
}

Alors quelle utilisation de la création de méthode partielle, j'ai lu sur MSDN que, au moment de l'exécution, le compilateur compile la classe en un, dans ce cas, le compilateur devrait également obtenir l'implémentation de la méthode "Méthode", alors pourquoi cela ne me permet pas d'appeler le " Méthode "Méthode dans la méthode principale, quelqu'un peut-il me corriger si je me trompe et me dire pourquoi je ne suis pas en mesure d'appeler cette méthode partielle dans Main.

Était-ce utile?

La solution

De MSDN

Aucun modificateur d'accès ou attribution n'est autorisé. Les méthodes partielles sont implicitement privées.

C'est une méthode privée, vous ne pouvez donc pas l'appeler depuis Main.

Autres conseils

Vous pouvez appeler une méthode partielle à l'intérieur du constructeur où la méthode est définie.

Par exemple

    public partial class classA
    {
      partial void mymethod();
    }
    public partial class classA
    {
      partial void mymethod()
      {
         Console.WriteLine("Invoking partial method");
      }
      public ClassA()
      {
        mymethod();
      }


    }
public class MainClass
{
   static void Main()
   {
      ClassA ca=new ClassA();
   }
}

C'est tout ... exécutez votre code et voyez le résultat.

  • Production

Invoquer la méthode partielle

Oui, nous ne pouvons pas l'appeler à partir de Main(). Le problème n'est pas une méthode partielle Le problème est la méthode sans spécificateur dans une classe est une méthode privée et privé peut être appelée à l'intérieur de la classe uniquement.

Essayez de créer une nouvelle méthode publique en classe partielle:

partial class A
{
  partial void Method();
}

partial class A
{
  partial void Method()
  {
    Console.WriteLine("Hello World");
  }
  public void Study()
  {
    Console.WriteLine("I am studying");
    Method();
  }
}

class MainClass
{
  static void Main()
  {
    A obj = new A();
    obj.Study(); 
  }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top