zoukankan
html css js c++ java
对于string类的困惑
我们都知道,string类是一个reference type。看下面这段代码:
string
s1
=
"
hello
"
;
string
s2
=
s1;
Console.WriteLine(s1);
Console.WriteLine(s2);
s1
=
"
world
"
;
Console.WriteLine(s1);
Console.WriteLine(s2);
按理来说,s1被赋予world之后,那么s2应该也是指向这段内存空间,输出world,但实际上不是这样。
代码输出为:
hello
hello
world
hello
C#高级编程中是这么解释的,s1被修改后,会重新分配一块内存,来指向新的s1。这是解释了为什么会有这个结果。但是,它没有解释,CLR为什么要这么特殊处理string类。难道,因为string类用的特别多,要符合大家的使用习惯?
看下面这段代码,class很明显也是一个reference,但是结果却和上面不同。
//
类的定义
public
class
Test
{
private
int
number;
public
Test(
int
number)
{
this
.number
=
number;
}
public
int
Number
{
get
{
return
number;}
}
set
{number
=
value;}
}
public
override
string
ToString()
{
return
Number.ToString();
}
}
//
测试代码
Test t1
=
new
Test(
10
);
Test t2
=
t1;
Console.WriteLine(t1.ToString());
Console.WriteLine(t2.ToString());
t1.Number
=
20
;
Console.WriteLine(t1.ToString());
Console.WriteLine(t2.ToString());
上述代码输出的,是我们期望的值:
10
10
20
20
查看全文
相关阅读:
JUnit报错 java.lang.Exception:No tests found matching
tomcat配置好后,启动eclipse中的server,不能出现有猫的页面,提示404
eclipse中的项目无法添加到server下?
将web应用部署到Tomcat的三种方式
启动eclipse弹出提示Version 1.7.0_79 of the JVM is not suitable for this product. Version: 1.8 or greater is required怎样解决
EXISTS 与 NOT EXISTS 的用法及返回结果
删除具有联合主键的记录
序列化与反序列化
tomcat 线程池
Hibernate的实体类中为什么要继承Serializable?
原文地址:https://www.cnblogs.com/juqiang/p/37549.html
最新文章
面向对象
并发框架Disruptor
关于项目管理工具
电商后台设计(瓶颈分析)
整理备忘一波liunx命令(持续更新)
Jedis操作笔记 redis的五种存储类型
Jenkins
搭建 zookeeper + dubbo-admin + dubbo-monitor 环境
初探 opencv-python
python scrapy
热门文章
OAuth2.0
程序员整理的各种不错的工具(转)
用MVC4+EF改写XXX系统的计划--前言
git使用经验
sql 中的时间处理问题
mysql 服务不见了的解决办法
swfobject.js 2.2简单使用方法
JQuery上传插件Uploadify使用详解
httpwatch 9.3怎么在ie 8上看不到
VS2010常用插件介绍
Copyright © 2011-2022 走看看