相关疑难解决方法(0)

112
推荐指数
6
解决办法
6万
查看次数

C#按值传递而不是按引用传递

请考虑以下代码(我有意将 MyPoint编写为此示例的引用类型)

public class MyPoint
{
    public int x;
    public int y;
}
Run Code Online (Sandbox Code Playgroud)

它是普遍公认的(至少在C#中)当你通过引用传递时,该方法包含对被操作对象的引用,而当你通过值传递时,该方法复制被操纵的值,因此全局范围中的值是不受影响.

例:

void Replace<T>(T a, T b)
{
    a = b;
}

int a = 1;
int b = 2;

Replace<int>(a, b);

// a and b remain unaffected in global scope since a and b are value types.
Run Code Online (Sandbox Code Playgroud)

这是我的问题; MyPoint是引用类型,所以我希望在相同的操作Point,以取代ab在全球范围内.

例:

MyPoint a = new MyPoint { x = 1, y = 2 };
MyPoint b = new …
Run Code Online (Sandbox Code Playgroud)

c# value-type reference-type pass-by-reference pass-by-value

9
推荐指数
2
解决办法
7759
查看次数

可以将对象作为值传递给复制构造函数

我对此有一些困惑"可以将对象作为值传递给复制构造函数"编译器明确拒绝这一点,这意味着它是不可能的.你能帮我理解一下吗?

class Dummy{
    Dummy(Dummy dummy){ // This is not possible
    }
};
Run Code Online (Sandbox Code Playgroud)

那么为什么它会说"复制构造函数会在使用值传递时导致递归调用."

c++

6
推荐指数
3
解决办法
3319
查看次数

复制构造函数

可能重复:
为什么复制构造函数应该通过C++中的引用接受其参数?
为什么不允许复制构造函数按值传递?

我正在阅读关于C++课程的讲义.在注释中,他们说类的复制构造函数签名是

MyClass(MyClass及其他)

MyClass(MyClass其他)

不行.这是为什么?

谢谢!

c++

2
推荐指数
1
解决办法
1310
查看次数