C#初学者。编译错误

时间:2009-08-10 17:50:09

标签: c#

我是C#和visual studio 2005的新手 我在VS2005中创建了一个新的控制台应用程序项目,并将一个Class1.cs文件添加到默认创建的现有Program.cs文件中。

Class1.cs文件具有以下简单代码:

public class Class1
{

    public Class1()
    { 
    }

    ~Class1()
    {
    }

    public void PrintMessage()
    {
        Console.WriteLine("\nHello\n");
        Console.Read();
    }
}

program.cs文件包含以下内容:

class Program
{
    static void Main(string[] args)
    {
        PrintMessage();
    }
}

当我尝试编译时,我收到以下错误:

  

当前上下文中不存在名称“PrintMessage”。

任何帮助?

谢谢,Viren

11 个答案:

答案 0 :(得分:13)

尝试:

Class1 myClass = new Class1();
myClass.PrintMessage();

或者,可能更好,因为这看起来像一个效用函数。将方法定义更改为:

public static void PrintMessage()

所以你可以直接打电话。

Class1.PrintMessage();

答案 1 :(得分:3)

当前上下文中不存在名称“PrintMessage”。

它存在于另一个上下文中 - 类Class1的上下文。由于它是该(公共)类的公共函数,您可以通过创建Class1的实例(PrintMessage函数不是静态的,因此需要Class1的实例来调用它)然后调用PrintMessage函数来使用它。它

class Program
{
    static void Main(string[] args)
    {
        Class1 someClass1Object = new Class1();
        someClass1Object.PrintMessage(); 
    }
}

答案 2 :(得分:2)

PrintMessage不是“程序”类的方法,它是Class1的方法。试试

Class1 c = new Class1();
c.PrintMessage();

您可能还想要完成一两个教程:)

答案 3 :(得分:1)

class Program
{
    static void Main(string[] args)
    {
        new Class1().PrintMessage();
    }
}

或将PrintMessage()设为static,以便您可以使用下一个方式:

public class Class1
{
    public static void PrintMessage()
    {
        // ..
    }
}

class Program
{
    static void Main(string[] args)
    {
        Class1.PrintMessage();
    }
}

答案 4 :(得分:0)

PrintMessage()函数内部调用Main(这是Program类的函数)意味着编译器将在某处查找名为PrintMessage()的函数在程序类中。

您拥有的内容在Class1类中称为实例函数。要调用此类函数,您需要在函数中使用Class1的实例。像这样:

static void Main(string[] args)
{
    Class1 myClass = new Class1();

    myClass.PrintMessage();
}

答案 5 :(得分:0)

制作方法static可能就是你想要的,而不是其他建议:

public static void PrintMessage()
{
    Console.WriteLine("\nHello\n");
    Console.Read();
}

static告诉编译器此方法不依赖于类的实例。如果这对您没有任何意义,请阅读您最喜欢的C#书中的课程主题。

答案 6 :(得分:0)

PrintMessage()方法是 Class1 类的方法。您必须引用该类才能获得该方法。

 class Program 
 {
     static void Main(string[] args)
     {
         Class1 c = new Class1(); //Create an instance of your class
         c.PrintMessage(); //Call the PrintMessage method of class Class1
     } 
 }

注意:您可能希望将Class1重命名为更具描述性的内容。

答案 7 :(得分:0)

您需要引用方法所在的类。你必须这样做:

Class1.PrintMessages();

由于Class1不是静态的,因此您还需要该类的实例。你可以这样做:

Class1 c = new Class1();

最后,您必须调用前缀为实例变量的方法。您的代码将如下所示:

Class1 c = new Class1();
c.PrintMessages();

如果需要,可以使用句子缩短此代码

new Class1().PrintMessages();

与以前一样。

答案 8 :(得分:0)

您需要引用Class1类才能调用该类的方法。尝试:

Class1 myClass = new Class1();
myClass.PrintMessage();

答案 9 :(得分:0)

打印消息不是Main的一部分: 你必须告诉它它在哪里:

Class1 messageClass = new Class1();
messageClass.PrintMessage();

答案 10 :(得分:-1)

您需要引用打印消息的类。 。 。 AKA:Class1.PrintMessage()