有这么一个情况class A {
public Size max;
}class B {
private Size max;
public B(ref Size s) {
max = s;
}
}// 在 一个函数中做这个调用
class Main {
public main() {
A a = new A();
B b = new (a.max);
// ??? 这个地方当 a 的 max 改变时, b 的max 是否会改变
a.max.Width = 100;
// ??? 这里呢
a.max = new Size(20, 20);
}
}
补充问题,C# 中的值类型,如果像 C# 中的引用类型一样使用,就是像C++中的指针,改变一个地方,其它地方也跟着改变
public Size max;
}class B {
private Size max;
public B(ref Size s) {
max = s;
}
}// 在 一个函数中做这个调用
class Main {
public main() {
A a = new A();
B b = new (a.max);
// ??? 这个地方当 a 的 max 改变时, b 的max 是否会改变
a.max.Width = 100;
// ??? 这里呢
a.max = new Size(20, 20);
}
}
补充问题,C# 中的值类型,如果像 C# 中的引用类型一样使用,就是像C++中的指针,改变一个地方,其它地方也跟着改变
补充问题:
那就一直ref/out着走。
Sise 是结构体 但是 他是 A,B中的成员,所以。你用 a.ssss.ssssw 的方式 会改变。
{
int I{get;set;}
}A a = new A();
a.I = 123;一样, 一定会改变。
public Size max;
}class B {
Size *max;
public B(Size *s) {
max = s;
}
}// 调用
A a;
B b(&a.max);像这种在 C# 中该如何实现
使用unsafe的代码就可以了。
unsafe class B {
Size *max;
public B(Size *s) {
max = s;
}
}
{
public Size[] max=new Size[1];
} class B
{
private Size[] max;
public B(Size[] s)
{
max = s;
}
}