2015-04-04 81 views
-1

當我試圖從另一個類(而不是主類)調用方法時,我有一個小問題。這裏是我的測試代碼:從C#中的另一個類的調用方法#

using System; 

namespace ConsoleApplication3 
{ 
    public class Program 
    { 
     static void Main(string[] args) 
     { 
      Class1 cl = new Class1(); 
      cl.TestMethod(); 
     } 
    } 

    public class Class1 
    { 
     public string TestMethod() 
     { 
      return "test"; 
     } 
    } 

    public class Class2 
    { 
     Class1 cl = new Class1(); 
     cl.TestMethod(); //Error here 
    } 
} 

我應該怎樣在Class2中調用TestMethod?

回答

2

你不能從外部的方法,constrcutor或財產 變化二類調用一個方法來這樣:

public class Class2 
{ 
    public Class2 
    { 
     Class1 cl = new Class1(); 
     cl.TestMethod(); //Error here 
    }} 
0

我覺得你有方法混淆類。

方法是一個子例程,它可以從代碼的其他部分調用並按順序運行。

類是一種數據類型。您可以創建某個類的特定實例,然後訪問其屬性或調用其方法。

所以Main是一種方法,而不是一個類。具體來說,它是程序類的一種方法。

在一個類中,所有可執行代碼必須在方法內。這個規則的一種(某種)例外是,你可以初始化方法外的成員。這就是你用c1 = new Class1()所做的。這些語句在您使用new創建類時隱式執行。

要調用class1方法,您必須聲明class2上的方法來執行它,或者定義一個構造函數來引發它。然而,讓一個構造函數執行很多工作是非常糟糕的做法。一個構造只應該做一些事情,比如初始化類來運行所需的成員。

0

您已經定義了第二個類,它需要一個方法或其中的構造函數才能工作。將它包裝在實例化中,它將可訪問:)

1

您不能將方法調用到類體中。指定方法,或者,例如,將代碼放入如下所示的Class2構造函數中:

using System; 

namespace ConsoleApplication3 
{ 
    public class Program 
    { 
     static void Main(string[] args) 
     { 
      Class1 cl = new Class1(); 
      cl.TestMethod(); 
     } 
    } 

    public class Class1 
    { 
     public string TestMethod() 
     { 
      return "test"; 
     } 
    } 

    public class Class2 
    { 
     Class1 cl = new Class1(); 

     public Class2() 
     { 
      cl.TestMethod(); 
     } 
    } 
} 
相關問題