从一个类中访问对象

3
我已经创建了一个名为aNameClass.cs的单独的.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
您需要使用静态引用,并像这样指定方法的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,因此仅对包含它的类可见,而不对任何其他类可见。


现在它说不能使用实例引用访问,应该用类型名称限定它?这是什么意思? - jpavlov
实际上,我所要做的就是调用完整的类名,然后我的对象就会变得可见。谢谢。 - jpavlov
我创建实例是错误的,我调用类,然后创建对象才是正确的。 - jpavlov
@jpalov:是的,静态方法适用于类型而不是实例。 - santosh singh
抱歉,我第一次错过了那个问题。已更新答案。 - Paul Sasik

1
将该方法设为公共,并在类型上调用静态方法而不是实例。
csGetChoice.GetChoice();

1

static关键字用于类型成员,表示您可以通过直接引用class来访问它,而不是其对象。但是,您仍然需要正确的访问修饰符才能访问该成员

当您在C#中未明确声明访问修饰符时,默认值为private。这使您只能在其内部访问该成员

要能够从class外部访问它,您需要明确地使用其他访问修饰符,例如public


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接