伊莉討論區
標題:
呼叫不同類別之物件方式
[打印本頁]
作者:
iansuperian
時間:
2017-11-6 10:19 PM
標題:
呼叫不同類別之物件方式
如題
假如我的class有A,B,C三個
B class裡全部宣告物件
A,C有沒有辦法以宣告方式
直接取用B裡面的物件?
ex.
class
public static int x,y;
class C
public static B B_Object;
B_Object = new B;
類似這樣
但是我在自己的範例中使用
卻還是無法在C裡使用x,y
不知道這樣做有甚麼問題?
或是還需要注意甚麼?
新手發問請不吝賜教
作者:
joanna57kimo
時間:
2017-11-7 01:12 AM
宣告成 public static B
就能直接在 Class C 裡面存取 B.x, B.y 了!
簡單講 static 的功能就是不用 New 就會存在的 Instance...
作者:
羕漾
時間:
2017-11-25 02:08 AM
本帖最後由 羕漾 於 2017-11-25 02:17 AM 編輯
有點看不太懂,你是指像是有一個 B 類別,定義了 x 及 y 兩個 static 變數嗎?
public class B {
public static int x, y;
}
複製代碼
然後想在 C 類別中實體 B 後呼叫兩個靜態變數?
public class C {
void main() {
B objB = new B();
// get objB.x -> 類似這樣 ???
}
}
複製代碼
靜態變數不允許實體時呼叫,所以你需要直接用 B.x 來呼叫,不能使用 objB.x 呦!
作者:
Josie_2016
時間:
2017-11-25 07:29 AM
不用自己建立實體(不用new)
假設有一類別
public class B
{
public static int x=10;//靜態欄位
public static int y = 15;//靜態欄位
public static int Sum(int a, int b) //靜態方法
{
return a + b;
}
}
複製代碼
使用
static void Main(string[] args)
{
Console.WriteLine(B.x);//直接取用,不用new
Console.WriteLine(B.y);//直接取用,不用new
Console.WriteLine(B.Sum(100,200));//直接取用,不用new
Console.ReadLine();
}
複製代碼
就像上面WriteLine及ReadLine是Console類別的靜態(static)方法
作者:
rr09192084
時間:
2017-12-28 02:53 PM
static void Main(string[] args)
{
A.a_X = 15; //A class的a_X是靜態成員,所以可以直接存取或是指定。
A.a_Y = 15; //A class的a_Y是靜態成員,所以可以直接存取或是指定。
B b_class = new B(12, 13); //B class 有寫建購子函式,所以用建構函式指定b_X和b_Y的值。
Console.WriteLine("A class SUM =" + A.a_Sum().ToString()); //A class 的 a_X 和 a_Y 都指定為15,所以a_SUM是30。
Console.WriteLine("B class SUM =" + B.b_Sum().ToString()); //B class 建構函式中指定了X=12,Y=13,所以b_SUM是25。
Console.WriteLine("C class SUM =" + C.c_Sum().ToString()); //C class 的X 和Y 預設值是和B class 的預設值(X=6, Y=8)一樣,所以c_SUM是14。
C.c_X += 1; //C class的c_X值+1,c_X=7。
Console.Write("c_X + 1 = " + C.c_X.ToString());
C.c_Y += 5; //C calss的c_Y值+5,c_Y=13。
Console.Write(" , c_Y + 5 = " + C.c_Y.ToString());
Console.WriteLine(" , C class SUM = " + C.c_Sum().ToString()); //C class 的 c_SUM 變成 7 +13 等於20。
Console.Write("Press any key to exit...");
Console.ReadKey();
}
}
public class A
{
public static int a_X;
public static int a_Y;
public static int a_Sum()
{
return a_X + a_Y;
}
}
public class B
{
public static int b_X = 6;
public static int b_Y = 8;
public static int b_Sum()
{
return b_X + b_Y;
}
public B(int a, int b) //建購子函式
{
b_X = a;
b_Y = b;
}
}
public class C
{
public static int c_X = B.b_X;//靜態成員可以直接存取
public static int c_Y = B.b_Y;//靜態成員可以直接存取
public static int c_Sum()
{
return c_X + c_Y;
}
}
複製代碼
參考看看
作者:
joanna57kimo
時間:
2018-1-1 12:41 AM
建議使用5樓的程式碼進行 Debug,從 main() 第一行用 F11 逐行去看程式是怎麼執行的!
然後再修改其中一個 Class 不要宣告成 static 之後,再 trace 一遍,
最後透過兩種不同宣告方式的測試,思考一下何謂變數的生命週期!
歡迎光臨 伊莉討論區 (http://www4.eyny.com/)
Powered by Discuz!