问题描述
我想实现:有一引用变量,如ObjectA;然后有一个数据块,比如用结构体记录一些信息,其中包括A的引用信息。然后一个程序段通过操作这个数据块,能够给A付值。这在C++里应该比较容易实现,比如用指向指针的指针等,但在C#里好像没有实现的方法。C++例子大概如下:classA{}A*a;structX{A**P;}程序段intmain(){AnewA;XnewX;X.P=&a;//其他操作...........................*(X.P)=&newA;//这样就把newA的地址付给a了}C#能实现类似的功能么???
解决方案
解决方案二:
string[]arr=newstring[5];varb=arr;//这不就是传递地址了吗?
解决方案三:
值类型复制,引用类型传递地址
解决方案四:
我印象中除了几种基础类型intfloat是值传递,稍微复杂一点的都是引用传递,什么List、对象啥的。
解决方案五:
string[]arr=newstring[5];varb=arr;//这不就是传递地址了吗?我是想通过对b付值来修改arr比如:string[]arr=newstring[5];varb=arr;//这不就是传递地址了吗?b=newstring[6];//这样arr的值不会变吧。
解决方案六:
我是想通过一中间变量,能对变量的引用对象进行修改。比如:两个变量X,Y引用变量A指向X(即A=X)另有一变量B我想通过修改B,能达到让A指向Y这在C++里能通过指向指针的指针来实现。可C#里怎么搞?
解决方案七:
voidSet(refstring[]aaa){}Set(refb)
解决方案八:
通过重新给B分配地址,来达到让A也指向新地址,好像实现不了……
解决方案九:
除非你写unsafe代码
解决方案十:
恩。好的,谢谢了。过会儿结贴
解决方案十一:
引用5楼zzybird的回复:
我是想通过一中间变量,能对变量的引用对象进行修改。比如:两个变量X,Y引用变量A指向X(即A=X)另有一变量B我想通过修改B,能达到让A指向Y这在C++里能通过指向指针的指针来实现。可C#里怎么搞?
C#实现不了这个除非你在C#中使用指针
解决方案十二:
按值类型传递引用类型classMyInfo{publicstringMyName;//定义一个字符串类型变量存储用户姓名publicintMyAge;//定义一个整数类型变量存储用户年龄publicMyInfo(stringname,intage)//创建一个带参数的构造函数{MyName=name;MyAge=age;}//codego.net/1/1/1/publicMyInfo(){}//默认构造函数publicvoidPrintInfo()//创建一个公有方法输出用户年龄信息{Console.WriteLine("{0}年龄是{1}岁",MyName,MyAge);}}创建方法带入值publicstaticvoidSendAPersonByValue(refMyInfoinfo){info.MyAge=99;//改变'info'的值info=newMyInfo("关新宇",25);//”info”现在指向了堆上的一个新对象}在Main函数中实现引用传递staticvoidMain(string[]args){Console.WriteLine("输出用户年龄信息:");MyInfofred=newMyInfo("赵启明",29);Console.WriteLine("未改变用户信息前");fred.PrintInfo();SendAPersonByValue(reffred);Console.WriteLine("改变后的用户年龄信息:");fred.PrintInfo();}