c#基础三
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; namespace _02Directory { class Program { static void Main(string[] args) { //CreateDirectory:创建一个新的文件夹 //Delete:删除 //Move:剪切 //Exist()判断指定的文件夹是否存在 //if (!Directory.Exists(@"C:\Users\SpringRain\Desktop\new")) //{ // Directory.CreateDirectory(@"C:\Users\SpringRain\Desktop\new"); //} //Console.WriteLine("操作成功"); //for (int i = 0; i < 100; i++) //{ // Directory.CreateDirectory(@"C:\Users\SpringRain\Desktop\new\" + i); //} //Console.WriteLine("创建成功"); //移动 //Directory.Move(@"C:\Users\SpringRain\Desktop\new", @"C:\Users\SpringRain\Desktop\new2"); //Console.WriteLine("移动成功"); //Directory.Delete(@"C:\Users\SpringRain\Desktop\new2",true); //Console.WriteLine("删除成功"); //Console.ReadKey(); //获得指定目录下所有文件的全路径 //string[] fileNames = Directory.GetFiles(@"F:\老赵生活\Music","*.mp3"); //获得指定目录下所有的文件夹 //只能获得当前第一目录下所有的文件夹 string[] dics = Directory.GetDirectories(@"c:\"); foreach (string item in dics) { Console.WriteLine(item); } Console.ReadKey(); } } }
1、StringBuilder
它就是拼接字符串的一个工具,拼成完成后,还是需要将它转回字符串。
详解 见 https://www.cnblogs.com/cang12138/p/7323709.html
2、ref参数
ref参数侧重于将一个值带到函数中进行改变,再讲改变后的值带出去。ref参数在函数内不用赋值
函数外必须为ref参数赋值。
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace _04ref参数的使用 { class Program { static void Main(string[] args) { double salary = 5000; JiangJin(ref salary); Console.WriteLine(salary); Console.ReadKey(); } static void JiangJin(ref double s) { s += 500; } } }
3、out参数
4、params可变参数
5、集合的学习
非泛型集合
ArrayList
Hashtable
泛型集合List<T>
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace _07List泛型集合 { class Program { static void Main(string[] args) { List<int> list = new List<int>(); //集合--->数组 //Count:获取集合中实际包含的元素的个数 //Capcity:集合中可以包含的元素的个数 //list.Add(1); //Console.WriteLine(list.Count); //Console.WriteLine(list.Capacity); //Add的是添加单个元素 //AddRange是添加集合 list.Add(100); list.AddRange(new int[] { 1, 2, 3, 4, 5, 6 }); //list.Remove(100); //list.RemoveAll(n => n > 3); //list.RemoveAt(3); //list.RemoveRange(1, 6); // list.Insert(1, 200); // list.InsertRange(0, new int[] { 5, 4, 3, 2, 1 }); //集合跟数组之间的转换 //集合----->数组 int[] nums = list.ToArray(); List<string> list2 = new List<string>(); //list2.ToArray() //数组转集合 int[] nums3 = { 1, 2, 3, 4, 5, 6 }; List<int> list3 = nums3.ToList(); for (int i = 0; i < list3.Count; i++) { Console.WriteLine(list3[i]); } Console.ReadKey(); } } }
Dictionary<Tkey,Tvalue>
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace _09Dictionary键值对集合 { class Program { static void Main(string[] args) { //Dictionary<string, string> dic = new Dictionary<string, string>(); //dic.Add("1", "张三"); //dic.Add("2", "李四"); //dic.Add("3", "王五"); //dic.Add("4", "赵六"); ////键值对集合中的键必须是唯一的 ////dic.Add(4, "田七"); ////键值对集合中的值是可以重复的 //dic.Add("5", "王五"); ////可以给键值对集合中的某一个值进行重新赋值 //dic["4"] = "田七"; //键值对集合常用函数 //判断集合中是否已经包含某一个键 //if (!dic.ContainsKey(13)) //{ // dic.Add(13, "玩狗蛋儿"); //} //else //{ // dic[3] = "王狗蛋儿"; //} //Console.WriteLine(dic[13]); //使用foreach循环,通过遍历键值对的形式对键值对集合进行遍历 //第一种遍历方式:遍历集合中的键 //foreach (string item in dic.Keys) //{ // Console.WriteLine("键---{0} 值---{1}",item,dic[item]); //} //第二种遍历方式:遍历集合中的键值对 //foreach (KeyValuePair<string, string> kv in dic) //{ // Console.WriteLine("键---{0} 值---{1}", kv.Key, kv.Value); //} //Console.WriteLine(dic[3]);//整体代表的就是值 // Console.ReadKey(); } } }
6、装箱和拆箱
装箱:值类型---->引用类型
拆箱:引用类型--->值类型
我们判断是否发生了拆箱或者装箱,首先要判断这两种数据类型是否存在继承关系。
你装箱的时候拿什么类型装的箱,你拆的时候,就得拿什么类型去拆。
7、List<T>常用的函数
Add():添加单个元素
AddRange():添加一个集合
Insert():插入一个元素
InsertRange():插入一个集合
Remove():移除指定的元素
RemoveAt():根据下标移除元素
RemoveRange():移除一定范围内的元素
ToArray():集合转换成数组
ToList():数组转换成集合
8、编码格式
将字符串是怎样的形式保存为二进制。
ascii 256
6000 GB2312
GBK GB18030
ISO
Unicode
utf-16
utf-8
出现乱码的原因:我们保存这个文件的时候采取的编码跟打开这个文件的时候采取的编码格式不一致。
文本文件:拖到txt中还能看得懂得就是文本文件
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; namespace _14File类的操作 { class Program { static void Main(string[] args) { //File //Exist():判断指定的文件是否存在 //Create():创建 //Move():剪切 //Copy():复制 //Delete():删除 //if (!File.Exists("1.txt")) //{ // File.Create("1.txt"); //} //if (File.Exists("1.txt")) //{ // File.Delete("1.txt"); //} // //File.Copy(@"C:\Users\SpringRain\Desktop\english.txt", @"D:\aaaaaa.txt"); //Console.WriteLine("操作成功"); //File.Move(@"D:\aaaaaa.txt", @"C:\Users\SpringRain\Desktop\bbbbbb.txt"); //ReadAllLines()默认采用的编码格式是utf-8 //string[] str = File.ReadAllLines(@"C:\Users\SpringRain\Desktop\english.txt"); //ReadAllText()默认采用的编码格式也是utf-8 //string str = File.ReadAllText(@"C:\Users\SpringRain\Desktop\english.txt"); //Console.WriteLine(str); //byte[] buffer = File.ReadAllBytes(@"C:\Users\SpringRain\Desktop\english.txt"); ////字节数组---->字符串 //string str = Encoding.UTF8.GetString(buffer); //Console.WriteLine(str); //string str="张三李四王五百家姓"; ////字符串--->字节数组 //byte[] buffer= Encoding.Default.GetBytes(str); //File.WriteAllBytes(@"C:\Users\SpringRain\Desktop\121212.txt", buffer); //Console.WriteLine("写入成功"); //Console.ReadKey(); //File.WriteAllLines(@"C:\Users\SpringRain\Desktop\121212.txt", new string[] { "a", "b" }); // File.WriteAllText(@"C:\Users\SpringRain\Desktop\121212.txt", "c"); //byte[] buffer = new byte[3]; //Console.WriteLine(buffer.ToString()); //18 99 221 我爱你 // Encoding.Default.GetString() } } }
File的使用
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; namespace _01File类练习 { class Program { static void Main(string[] args) { //string path = @"C:\Users\SpringRain\Desktop\工资.txt"; //string[] contents = File.ReadAllLines(path, Encoding.Default); //for (int i = 0; i < contents.Length; i++) //{ // //temp[0]张三 temp[1]5000 // string[] temp = contents[i].Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); // contents[i] = temp[0] + int.Parse(temp[1]) * 2; //} //File.WriteAllLines(path, contents); //Console.WriteLine("操作成功"); //Console.ReadKey(); } } }
Directory的使用
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; namespace _02Directory { class Program { static void Main(string[] args) { //CreateDirectory:创建一个新的文件夹 //Delete:删除 //Move:剪切 //Exist()判断指定的文件夹是否存在 //if (!Directory.Exists(@"C:\Users\SpringRain\Desktop\new")) //{ // Directory.CreateDirectory(@"C:\Users\SpringRain\Desktop\new"); //} //Console.WriteLine("操作成功"); //for (int i = 0; i < 100; i++) //{ // Directory.CreateDirectory(@"C:\Users\SpringRain\Desktop\new\" + i); //} //Console.WriteLine("创建成功"); //移动 //Directory.Move(@"C:\Users\SpringRain\Desktop\new", @"C:\Users\SpringRain\Desktop\new2"); //Console.WriteLine("移动成功"); //Directory.Delete(@"C:\Users\SpringRain\Desktop\new2",true); //Console.WriteLine("删除成功"); //Console.ReadKey(); //获得指定目录下所有文件的全路径 //string[] fileNames = Directory.GetFiles(@"F:\老赵生活\Music","*.mp3"); //获得指定目录下所有的文件夹 //只能获得当前第一目录下所有的文件夹 string[] dics = Directory.GetDirectories(@"c:\"); foreach (string item in dics) { Console.WriteLine(item); } Console.ReadKey(); } } }
TreeView的使用
见 https://www.cnblogs.com/net064/p/5534697.html