[英]Call method in class from another class in C#
當我嘗試從另一個類(不是 Main 類)調用方法時,我遇到了一個小問題。 這是我的測試代碼:
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?
您不能從方法,構造函數或第二個屬性更改類外部調用方法:
public class Class2
{
public Class2
{
Class1 cl = new Class1();
cl.TestMethod(); //Error here
}}
您不能將方法調用到類主體中。 指定方法,例如,將您的代碼放入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();
}
}
}
我認為您將類與方法混淆。
方法是子例程,是一部分代碼,可以從代碼的其他部分調用這些代碼,並按順序運行。
類是數據類型。 您創建類的特定實例,然后訪問其屬性或調用其方法。
所以Main是一個方法,而不是一個類。 具體來說,它是程序類的一種方法。
在一個類中,所有可執行代碼必須在方法內部。 該規則的一個(某種)例外是您可以在方法外部初始化成員。 那就是您對c1 = new Class1()
所做的事情。 使用new創建類時,將隱式執行這些語句。
要調用class1方法,您必須在class2上聲明一個方法來執行它。l,或定義一個調用該方法的構造函數。 但是,讓構造函數執行大量工作是非常不好的做法。 構造只能執行類起作用之類的初始化成員之類的事情。
您已經定義了第二個類,它需要一個方法或其中的構造函數才能使其正常工作。 將其包裝在實例化周圍,它將可以訪問:)
有一個簡單的解決方案。 就像你用 Math.Abs() 做的那樣; 你應該使用靜態方法,
using System;
namespace ConsoleApplication3
{
public class Program
{
static void Main(string[] args)
{
Class1 cl = new Class1();
cl.TestMethod();
C_Auxilary.F_TestMeth();
}
}
public class Class1
{
public string TestMethod()
{
return "test";
}
}
public class Class2
{
Class1 cl = new Class1();
cl.TestMethod(); //Error here
}
}
namespace ConsoleApplication3
{
public static class C_Auxilary
{
public static void F_TestMeth()
{
;
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.