2011-05-10 6 views
1

Je travaille avec une bibliothèque de classes en C# avec ses propres méthodes et je veux créer un tableau à partir de cette bibliothèque, mais quand je l'appelle dans le programme principal je ne peux pas voir ses méthodes.bibliothèque de classes personnalisées en tant que tableau C#

public class ClassLibrary1 
{ 
    public int num;      

    public ClassLibrary1() 
    { 

    } 

    public void Readdata() 
    { 
     Console.Write("write a number "); 
     num = int.Parse(Console.ReadLine()); 
    } 
} 

Program.cs:

ClassLibrary1[] arraynumbers = new ClassLibrary1[5]; 

arraynumbers.Readdata(); 

Et je ne peux pas utiliser Readdata().

Quelqu'un peut-il m'aider?

Répondre

0

Readdata() est une méthode de l'instance ClassLibrary1, pas le tableau qui contient ClassLibrary1 instances.

2

Si vous souhaitez appeler des méthodes dans votre classe, vous devez créer au moins une instance. Comme c'est le cas, tout ce que vous avez fait est de créer un tableau de références nulles, puis essayez d'appeler votre méthode sur le tableau. Voici une façon de le faire.

ClassLibrary1[] arraynumbers = new ClassLibrary1[5]; 
for(int i = 0; i < 5; i++) 
{ 
    arraynumbers[i] = new ClassLibrary1(); 
} 
arraynumbers[0].Readdata(); 
0

Les méthodes définies sur une classe ne peuvent pas être appelées sur une collection de cette classe. Si vous souhaitez utiliser une méthode sur une collection, envisager de faire une méthode d'extension:

public static class ClassLibrary1Extensions 
{ 
    public static Readdata(this ClassLibrary[] value) 
    { 
     ... 
    } 
} 

Le « ce » mot-clé dans le premier paramètre vous permet de « faire semblant » cette méthode est sur un type de « ClassLibrary1 [] "ou tableau. C'est à dire. étendre ce type.

1

Vous ne pouvez pas utiliser Readdata la façon dont vous l'avez mis parce ClassLibrary1[] est un objet ARRAY, pas un objet ClassLibrary1, dans lequel votre méthode est définie.

Il faudrait faire quelque chose comme ceci:

arraynumbers[0].Readdata(); 
Questions connexes