上篇文章中说到string类型是引用类型,咱们今天来看看。
1class Program
2        {
3                static void Main(string[] args)
4                {
5                        int i = 10;
6                        string s = "改变前";
7                        Console.WriteLine("i={0}",i);
8                        Console.WriteLine("s={0}", s);
9                        Console.WriteLine("-----------------------");
10                        FangFa(i,s);
11                        Console.WriteLine("i={0}", i);
12                        Console.WriteLine("s={0}", s);
13                }
14                static void FangFa(int i, string s)
15                {
16                        i = 100;
17                        s = "改变后";
18                }
19        }
从上面的代码看,如果s为引用类型的话,在第二次输出s的时候应该改变,但结果是

s的值并未发生变化,为什么呢?
看一下MSDN怎么说:
String 对象称为不可变的(只读),因为一旦创建了该对象,就不能修改该对象的值。看来似乎修改了 String 对象的方法实际上是返回一个包含修改内容的新 String 对象。
意思每个string变量都是一个String类的对象,String的对象有个特点,一旦创建,就是不能更改的了,那为什么能第二次给string类型的变量赋值呢?
1string a="123";
2a="456";
这里的a第一次是"123",第二次是"456",其实本质上已经是两个对象了,只不过值为"123"的对象名与值为"456"的对象名一样,当用a这个变量的时候,IDE索引的是最后一次赋的值。

.net知识和学习方法系列(七)string类型相关推荐

  1. .net知识和学习方法系列(十七)CLR-CLR中的值类型和引用类型

    C#中有谈到两种类型,值类型和引用类型(其实是CLR支持两种类型). 值类型包括:简单类型(int ,double,long,bool,char等,string除外),struct,enum 引用类型 ...

  2. .net知识和学习方法系列(十五)类型,对象,堆栈和托管堆

    1.          类型,对象,堆栈和托管堆 C#的类型和对象在应用计算机内存时,大体用到两种内存,一个叫堆栈,另一个叫托管堆,下面我们用直角长方形来代表堆栈,用圆角长方形来代表托管堆.   首先 ...

  3. .net知识和学习方法系列(前言)

    我是做培训的,应广大学生之邀,在这里开个学习.net的系列.     当然.net的范围非常之多,我想主要从CSharp,winform,asp.net(ajax),WPF等方面来说,当然要从简单到复 ...

  4. .net知识和学习方法系列(二十)CLR-委托

    delegate void DL(int i); 上面是一个委托的定义,委托向外提供了一种回调函数的机制,在.net中的委托是类型安全的,一个委托能实现对一类方法的回调,这个统一是通过委托的参数和返回 ...

  5. .net知识和学习方法系列(三)CSharp中控件台的输入输出

    输出语句 Console.Write(); Console.WriteLine(); 分别来说一下,Write方法是输出到控件台上内容,它有18种重载方法 WriteLine方法同样是输出到控制台上内 ...

  6. .net知识和学习方法系列(二十五) .net中的windows service与服务操作

    昨天一个朋友想用做个短信网关,与移动TCP/IP通迅来完成短信的发送.并且想是用一个Windows服务来完成这个工作,但是又想让管理员能在客户端(浏览器端)对服务进行装载,卸载,启动,停止.我初步听了 ...

  7. .net知识和学习方法系列(十四)TraceListener的应用

    在前一往上一往篇文章中,我们用到一个TextWriterTraceListener,它是为监视跟踪和调试输出的侦听器,对于跟踪调试的监听器还有两个,分别是:DefaultTraceListener和E ...

  8. .net知识和学习方法系列(四)继承中方法的隐藏和重写

    最近在教学生时,学员老理解不清方法的隐藏和重写,后来想了想,终于能用反射能让学生明白这两者的区别! 看一下例子: 隐藏:  1    class Class1  2    {  3        pu ...

  9. string类型加减_测试人员应该知道的Redis知识(四) String

    一.概述 完整的说,应该是Binary-safe string,二进制安全字符串.从官网内容我们可以看到,String类型是最简单的一种数据类型,和Memcached的类型一致,一个key对应一个va ...

最新文章

  1. zabbix 小纪录
  2. python收集网页中的翻页
  3. linux安全体系分析与编程pdf下载,linux内核printk调试(摘录《Linux安全体系分析与编程》)...
  4. 在新的数学证明中,人工智能取胜
  5. C# 编写Web API
  6. 转:IDEA 创建类注释模板和方法注释模板
  7. H.264解码器中CAVLC码表查找算法的分析与优化
  8. B站、豆瓣都崩了,还有啥技术能靠得住?
  9. 【转】用Terracotta实现Master-Worker
  10. crontab 问号_轻松搞定crontab和quartz表达式
  11. Gxlcms有声小说系统/小说听书系统源码
  12. zoj3987—Numbers(贪心)
  13. 【游记】CSP2021-试手记
  14. 华罗庚 计算机,华罗庚有关计算机的故事
  15. 非常全面的前端协作规范
  16. linux云计算工程师百度百科,广州学习linux云计算工程师
  17. 我的世界服务器核心文件,minecraft1.9服务端核心Paper
  18. 牛客网数据库SQL实战14—— 从titles表获取按照title进行分组,注意对于重复的emp_no进行忽略。
  19. keras中的目标函数和优化函数
  20. 【已解决】window 更新:*某些设置由你的组织来管理问题

热门文章

  1. wedo巡线机器人编程教程_这是一个机器人和编程的时代
  2. 全面解析虚拟内存概念
  3. python服务器搭建ftp_Python搭建HTTP服务器和FTP服务器
  4. mysql pmm进程_mysql性能监控软件pmm
  5. 区块链 java 开源_详细介绍Java区块链开源代码背后的内容
  6. 线性代数第五版吉尔伯特课后答_线性代数同济第五版第四章课后习题答案!
  7. python 底层实现_用Python从底层实现一个多层感知机
  8. 【机器学习】异常检测算法(I)
  9. 递归方法:对于树形结构的表,根据当前数据获取无限极的父级名称
  10. Visual Studio 2013 Update 2 RTM 发布