1、命名空间 可以认为类是属于命名空间的。 如果在当前项目中没有这个类的命名空间,需要我们手动的导入这个类所在的 命名空间。 1)、用鼠标去点 2)、alt+shift+F10 3)、记住命名空间,手动的去引用
2、在一个项目中引用另一个项目的类 1)、添加引用 2)、引用命名空间
3、值类型和引用类型 区别: 1、值类型和引用类型在内存上存储的地方不一样。 2、在传递值类型和传递引用类型的时候,传递的方式不一样。 值类型我们称之为值传递,引用类型我们称之为引用传递。 我们学的值类型和引用类型: 值类型:int、double、bool、char、decimal、struct、enum 引用类型:string、自定义类、数组 存储: 值类型的值是存储在内存的栈当中。 引用类型的值是存储在内存的堆中。
3、字符串 1)、字符串的不可变性 当你给一个字符串重新赋值之后,老值并没有销毁,而是重新开辟一块空间存储新值。
当程序结束后,GC扫描整个内存,如果发现有的空间没有被指向,则立即把它销毁。
2)、我们可以讲字符串看做是char类型的一个只读数组。 ToCharArray();将字符串转换为char数组 new string(char[] chs):能够将char数组转换为字符串 string可以看做是char的只读数组。char c = s[1];。例子:遍历输出string中的每个元素。 C#中字符串有一个重要的特性:不可变性,字符串一旦声明就不再可以改变。所以只能通过索引来读取指定位置的char,不能对指定位置的char进行修改。 如果要对char进行修改,那么就必须创建一个新的字符串,用s. ToCharArray()方法得到字符串的char数组,对数组进行修改后,调用new string(char[])这个构造函数(暂时不用细研究)来创建char数组的字符串。一旦字符串被创建,那么char数组的修改也不会造成字符串的变化。例子:将字符串中的A替换为a。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _04字符串 { class Program { static void Main(string[] args) { //可以讲string类型 看做是char类型的一个只读数组 string s = "abcdefg"; //直接这么搞也就完事了 s = "bbcdefg"; // s[0] = 'b';不能这样做 因为是只读的 //首先将字符串转换为char类型的数组 char[] chs = s.ToCharArray(); chs[0] = 'b'; //将字符数组转换为我们的字符串 s = new string(chs); //既然可以将string看做char类型的只读数组,所以我可以通过下标去访问字符串中的某一个元素 Console.WriteLine(s[0]); Console.WriteLine(s); Console.ReadKey(); } } } using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _05StringBuilder { class Program { static void Main(string[] args) { StringBuilder sb = new StringBuilder(); string str = null; //创建了一个计时器,用来记录程序运行的时间 //00:00:00.0422166 Stopwatch sw = new Stopwatch(); sw.Start();//开始计时 for (int i = 0; i < 100000; i++) { //str += i; sb.Append(i); } sw.Stop();//结束计时 Console.WriteLine(sb.ToString()); Console.WriteLine(sw.Elapsed); Console.ReadKey(); } } }