64,654
社区成员
发帖
与我相关
我的任务
分享
C++ 中
void Test(User userInfo)
{
userInfo.userId = 0 //因为这里是对形参拷贝的修改,所以不会影响函数外userInfo的值
}
void Test(User &userInfo)
{
userInfo.userId = 0;//会改变函数外userInfo的值,因为这里传的是引用了。
User userInfo2(3);
userInfo = userInfo2; //会改变userInfo。
}
C#中
void Test(User userInfo)
{
userInfo.userId = 0 //这里的修改会改变函数外userInfo的值,因为C#中的类都是引用。
User userInfo2 = new User(3); //新实例化一个User对象userInfo2
userInfo = userInfo2; //不会对外面的userInfo有任何改变,因为在函数里面不能更改引用本身
}
void Test(User &userInfo)
{
userInfo.userId = 0;//会改变函数外userInfo的值,因为这里传的是引用了。
User userInfo2(3);
userInfo = userInfo2; //会改变userInfo。
//这里明显不对的,而是要写成:*userInfo=userInfo2;这样才会改变;
userInfo=&userInfo2;//是不能改变userInfo中的值的,因为进来的是个地址的拷贝;如果我没有记错
}