簡體   English   中英

C#初學者。 編譯錯誤

[英]C # beginner. Compiler errors

我是C#和Visual Studio 2005的新手,我在VS2005中創建了一個新的Console Application項目,並將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”在當前上下文中不存在。

有什么幫助嗎?

謝謝,維倫

嘗試:

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

或者,可能會更好,因為這看起來像是一個實用函數。 將您的方法定義更改為:

public static void PrintMessage()

因此,您可以直接調用它。

Class1.PrintMessage();

名稱“ PrintMessage”在當前上下文中不存在。

它存在於另一個上下文中-類Class1。 由於它是該(公共)類的公共函數,因此可以通過創建Class1的實例(PrintMessage函數不是靜態的,因此需要Class1的實例來調用它)來使用它,然后在它。

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

PrintMessage不是類“ Program”的方法,而是Class1的方法。 嘗試

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

您可能還想閱讀一兩個教程:)

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();
    }
}

Main函數( Program類中的函數PrintMessage()內部調用PrintMessage()意味着編譯器將在程序類中的某個位置查找名為PrintMessage()的函數。

您所擁有的稱為Class1類上的實例函數 為了調用這種類型的函數,您需要在函數中具有Class1的實例。 像這樣:

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

    myClass.PrintMessage();
}

使方法static可能是您想要的,而不是這里的其他建議:

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

static告訴編譯器此方法不依賴於類的實例 如果這對您沒有任何意義,請閱讀您喜歡的C#書中的類主題。

您的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重命名為更具描述性的名稱。

您需要引用該方法所在的類。 您必須執行以下操作:

Class1.PrintMessages();

由於Class1不是靜態的,因此您還需要該類的實例。 您可以使用以下方法做到這一點:

Class1 c = new Class1();

最后,您必須調用以實例變量為前綴的方法。 您的代碼將如下所示:

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

如果需要,可以使用以下語句來縮短此代碼

new Class1().PrintMessages();

和以前一樣

您需要對Class1類的引用才能調用該類的方法。 嘗試:

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

打印消息不是Main的一部分:您必須告訴它它在哪里:

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

您需要引用打印消息的類。 又稱:Class1.PrintMessage()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM