命名空间: 命名空间的东西属于它,类属于命名空间;
若调用命名空间的东西时,不包含时需要添加命名空间
1、项目中没有包含命名空间
比如 若using System;不存在;调用Console.WriteLine();
方法1:将鼠标点到Console前面,等待出现需要显示的命名空间。
方法2:alt+shift+F10
2、一个项目中加另一个项目
第一步:选中项目--->右键 ----->添加引用----->项目----->添加要加入的项目;
第二步:在项目开始加入Using 项目的命名空间;
引用类型和值类型
值类型的值存储在栈中:int double decimal char bool struct enum
引用类型的值存储在堆中,名称在栈中:string、自定义类、数组、集合、object
string s="hello";
引用类型: “hello”的存储在堆中,地址存在栈中,名字为s;
字符串的不可变性
int num1=100;
num1=200; // 在栈中,num1中存放的本来是100,经过赋值后,覆盖掉100,值变为200;
string key="听课";
key="放学"; // 在栈中,key存放的本来是“听课”的地址,经过赋值后,堆中“听课”不变,新开辟一块空间存放“放学”,将新的地址放到key指向的栈中。
string key1="学习";
string key2="学习"; //这两个string中内容相同,在堆中只开辟了一个空间;在栈中开辟了两个空间。重新赋值的话,在堆中再开辟空间。
//string 就相当于一个char类型的只读数组。
StringBuilder sb= new StringBuilder(); //处理字符,运算速度很快,不需要每次都开辟空间
字符串string与char类型的数组转换
string name="tanghell";
string字符串可以看到char类型的只读数组;所有可以通过数组访问的方式访问:name[0]='t';(错误)
但是不能采用访问数组的方式改变string,因为string相当于只读的数组;name[0]='A'; (error)
方法:
1、字符串---->char类型的数组;
2、 更改 ;
3、 char类型数组------->字符串
1、char [ ] s=name.ToCharArray(); //将字符串转为char类型的数组
2、s[0]='A'; //更改
3、name=new string(s); //将char类型的数组转换为字符串。 得到改变后的string,在堆中的存储位置已改变。