写了一段测试代码,见下面。关于内存,out 关键字,等有不少疑问。
期待高手解答。
谢谢先。 PassData pass1;
PassData pass2;
private void TestStructOut()
{
int id = 2;
TestStruct.OutStruct(id, out pass1);
id = 4;
TestStruct.OutStruct(id, out pass2);
//测试发现
// 1 结构是值传递;
// 2 pass2.feed与pass1.feed没有任何关联。
// 疑问: 结构体的成员feed是在静态函数OutStruct内申明的,out传出来,它的生存期有多长?或者说,现在pass1与pass2的数据成员feed在整过生存期内都可靠吗?
谢谢。
} struct PassData
{
int ID;
int pass;
int[] feed;
public PassData(int id)
{
ID = id;
pass = id + 10;
feed = new int[pass];
for (int i = 0; i < pass; i++)
{
feed[i] = pass * i;
} } }
class TestStruct
{
static public void OutStruct(int id, out PassData pass)
{
pass = new PassData(id);
}
}
期待高手解答。
谢谢先。 PassData pass1;
PassData pass2;
private void TestStructOut()
{
int id = 2;
TestStruct.OutStruct(id, out pass1);
id = 4;
TestStruct.OutStruct(id, out pass2);
//测试发现
// 1 结构是值传递;
// 2 pass2.feed与pass1.feed没有任何关联。
// 疑问: 结构体的成员feed是在静态函数OutStruct内申明的,out传出来,它的生存期有多长?或者说,现在pass1与pass2的数据成员feed在整过生存期内都可靠吗?
谢谢。
} struct PassData
{
int ID;
int pass;
int[] feed;
public PassData(int id)
{
ID = id;
pass = id + 10;
feed = new int[pass];
for (int i = 0; i < pass; i++)
{
feed[i] = pass * i;
} } }
class TestStruct
{
static public void OutStruct(int id, out PassData pass)
{
pass = new PassData(id);
}
}
PassData pass3;
pass3 = pass1;
pass3.feed[0] = 10; // 这时pass1.feed[0]也改了,说明,这两数据结构的feed是指向统一内存
pass3.pass = 3; //而这里,并不改变 pass1的pass数据。