доступ к объектам из класса - PullRequest
3 голосов
/ 23 апреля 2011

Я создал отдельные имена файлов .cs aNameClass.cs и сохранил в нем следующий класс. Я могу указать это в своем утверждении Main (), но когда я пытаюсь получить доступ к объекту GetChoice, он говорит мне, что он недоступен из-за недопустимых привилегий.

вот мой код для его инициации и доступа к нему.

namespace aNameCollector
{
// ...

csGetChoice gc = new csGetChoice();
choice = gc.GetChoice();   //invalid prividlidges???


    class csGetChoice
    {
        static string GetChoice()
        {
            string choice = " ";
            Console.WriteLine("++++++++++++++++++=A Name Collector+++++++++++++++");
            Console.WriteLine();
            Console.WriteLine("What would you like to do?");
            Console.WriteLine("E = Enter a Name || D = Delete a Name || C = Clear Collector || V = View Collector || Q = Quit");
            choice = Console.ReadLine();
          return choice;
        }
    }

Ответы [ 3 ]

4 голосов
/ 23 апреля 2011

Вам необходимо использовать статическую ссылку и указать public для метода, подобного этому:

// static access:
choice = csGetChoice.GetChoice(); 
...
public static string GetChoice() { ...

или сделать метод методом экземпляра вместо статического, определить и получить к нему доступ следующим образом:

// instance access:
csGetChoice gc = new csGetChoice();
choice = gc.GetChoice();  
...
public string GetChoice() { ... // static keyword removed

Если вы не предоставите модификатор доступа , по умолчанию используется значение private, и поэтому оно доступно только классу, который его содержит, а не другим классам.

1 голос
/ 23 апреля 2011

Ключевое слово static для члена типа указывает, что вы можете получить к нему доступ, ссылаясь непосредственно на class, а не на его объекты . Тем не менее, вам все еще нужен правильный модификатор доступа, чтобы иметь доступ к этому member .

private является значением по умолчанию, если вы не явно объявляете модификатор доступа в C # , как в вашем случае. И это позволяет вам получить доступ к этому элементу только внутри его class.

Чтобы получить доступ к нему извне class, вам необходимо явно использовать другие модификаторы доступа как public.

1 голос
/ 23 апреля 2011

Сделайте метод общедоступным и вызовите статический метод для типа, а не для экземпляра

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