[問題] call by value的問題
我寫了一個程式
public class classA
{
public int a;
public int b;
public void classA(int _a, int _b)
{
a = _a;
b = _b;
}
}
public class useClassA
{
public callbyValue(classA obj)
{
obj.a = 1;
obj.b = 2;
}
public callbyRef(ref classA obj)
{
obj.a = 3;
obj.b = 4;
}
}
static void Main()
{
classA test_a = new classA(-1,-2);
useClassA test_use = new useClassA();
// test_a.a = -1
// test_a.b = -2
test_use.callbyValue(test_a)
// 照我對C#的理解
// 這時test_a的成員數值在這函式裡應該沒有被修改
// 所以應該還是維持 -1, -2
test_use.callbyRef(ref test_a);
// 我個人理解
// 這時test_a的成員才會被改成 3,4
}
可是沒想到, 在
test_use.callbyValue(test_a)後
test_a裡的成員就被改成 1, 2了.....
這和我腦中的call by value和 call by reference的概念不一樣呀~~~
有人可以解惑嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.216.55.178
※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1504234365.A.EAA.html
→
09/01 11:03, , 1F
09/01 11:03, 1F
→
09/01 11:07, , 2F
09/01 11:07, 2F
→
09/01 11:11, , 3F
09/01 11:11, 3F
推
09/01 18:18, , 4F
09/01 18:18, 4F
推
09/01 18:26, , 5F
09/01 18:26, 5F
→
09/01 18:26, , 6F
09/01 18:26, 6F
→
09/01 18:26, , 7F
09/01 18:26, 7F
推
09/01 18:28, , 8F
09/01 18:28, 8F
→
09/01 18:28, , 9F
09/01 18:28, 9F
推
09/03 16:34, , 10F
09/03 16:34, 10F
→
09/03 16:35, , 11F
09/03 16:35, 11F
→
09/03 16:35, , 12F
09/03 16:35, 12F
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):
C_Sharp 近期熱門文章
PTT數位生活區 即時熱門文章