Пользовательская библиотека классов в виде массива C # - PullRequest
1 голос
/ 11 мая 2011

Я работаю с библиотекой классов в 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();

И я не могу использовать Readdata().

Кто-нибудь может мне помочь?

Ответы [ 4 ]

2 голосов
/ 11 мая 2011

Если вы хотите вызывать методы в своем классе, вам нужно создать хотя бы один экземпляр.На самом деле, все, что вы сделали, это создали массив нулевых ссылок, а затем попытались вызвать ваш метод в массиве.Вот один из способов, которым вы могли бы это сделать.

ClassLibrary1[] arraynumbers = new ClassLibrary1[5];
for(int i = 0; i < 5; i++) 
{
    arraynumbers[i] = new ClassLibrary1();
}
arraynumbers[0].Readdata();
1 голос
/ 11 мая 2011

Вы не можете использовать Readdata так, как вы его называете, потому что ClassLibrary1[] - это объект ARRAY, а не объект ClassLibrary1, в котором определен ваш метод.

Вы должны сделать что-то вроде этого:

arraynumbers[0].Readdata();
0 голосов
/ 11 мая 2011

Методы, определенные в классе, не могут быть вызваны для коллекции этого класса.Если вы хотите использовать метод в коллекции, рассмотрите возможность создания метода расширения:

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

Ключевое слово «this» в первом параметре позволяет «притворяться», что этот метод относится к типу «ClassLibrary1».[] "или массив.Т.е. расширение этого типа.

0 голосов
/ 11 мая 2011

Readdata() - это метод экземпляра ClassLibrary1, а не массив, содержащий ClassLibrary1 экземпляров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...