为什么无法ref string 转换为 ref object 就是无法转换,手工转换一下object objURL = url;ref objURL; 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 楼上的难道不知道ref实际上就是传地址吗? 是因为C#编译器不允许你可以定议一个如abc(int a)调用是用abc((long)123)就会出错因为C#是用签名来区分方法的,不可以有一调用可以使用两个方法主要是为了重载 xixigongzhu(夕夕公主) :1.字符串和对象都是引用类型2.字符串和对象都是保存在堆中,而不是堆栈 楼上的:虽然字符串也是引用类型,但在堆栈里存储的是这个字符串在常量表的Token 装箱操作object中保存的都是地址所以才会有 object Zero = 0;ref Zero而不能是 ref 0;内存 0x??????? -> 0变量object 0x******* -> 0x????????ref 0x******* OK 被调用过程得到内容 0x??????? 是一个地址 用它来操作ref 0x?????? 会导致严重错误 相当于使用了地址 0x0 我觉得,MS这样的设计是必须的ref的参数,要求传递的类型和方法签名完全一致否则,比如这样string s = "sdf";public void (ref object obj){ obj = new Form1(); .........}就会产生不可预期的结果所以,为了安全性,.NET不允许这样传递参数 同样的道理public void ...(object obj){ .........}这样传值的方法无论你在里面如何处理这个obj都不会影响到外面的参数,所以允许传递一些参数的扩展类进来比如说int i = 10;...(10); ref是传引用调用,一个对字符串的引用不可能变成对object的引用。例如string s;s就只能引用字符串,而不可能引用其他类型的东西。这与隐式类型转换不同:object o = a;这样是可行的,但o是object的引用,而s还是string的引用,不可能把s变成object的引用。 怎样为PropertyGrid排序(属性类别排序,属性排序) C#字符相加问题 从SqlException如何获取到数据库连接字符串信息? ASP.NET(C#)中怎么实现中英文版本(网站开发) ? C#中如何动态设置一个数组的长度? 水晶报表导出格式排版问题 tabcontrol增加选项卡 怎么永久保存 ***请思归、孟宪会解决datagrid导出到Excel的问题,在线等........ 断点续传具体如何实现,有以教我 大神们帮忙下初学者 怎么把在dataset中修改的数据更新到数据源 无人可以解决的问题?但是还是想试试看
虽然字符串也是引用类型,但在堆栈里存储的是这个字符串在常量表的Token
object中保存的都是地址
所以才会有 object Zero = 0;
ref Zero
而不能是 ref 0;内存 0x??????? -> 0变量object 0x******* -> 0x????????ref 0x******* OK 被调用过程得到内容 0x??????? 是一个地址 用它来操作
ref 0x?????? 会导致严重错误 相当于使用了地址 0x0
ref的参数,要求传递的类型和方法签名完全一致否则,比如这样string s = "sdf";public void (ref object obj)
{
obj = new Form1();
.........
}就会产生不可预期的结果所以,为了安全性,.NET不允许这样传递参数
{
.........
}
这样传值的方法
无论你在里面如何处理这个obj
都不会影响到外面的参数,所以允许传递一些参数的扩展类进来
比如说
int i = 10;
...(10);
例如string s;
s就只能引用字符串,而不可能引用其他类型的东西。这与隐式类型转换不同:object o = a;这样是可行的,但o是object的引用,而s还是string的引用,不可能把s变成object的引用。