第十七节 查看类关系图,二元重载,objetc:万类之根、动态数组实例化、集合和泛型1
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
案例1:查看类关系图 namespace e1 { class Student { private string name; public string Name { set{name=value;} get { return name; } } private int age; public int Age { set {age=value ;} get { return age; } } public void SayHi() { Console.WriteLine("姓名:{0},年龄:{1}",name,age); } } } ———————————————————————————————————————————— namespace e1 { class Program { /// <summary> /// 查看类关系图 /// </summary> /// <param name="args"></param> static void Main(string[] args) { Student stu = new Student(); stu.Name = "张三"; stu.Age = 25; stu.SayHi(); Console.ReadKey(); } } } —————————————————————————————————————————————————————————————————————————————————————————————— 案例2:二元重载 amespace e2 { class Calclator { private int number; public Calclator() { number = 0; } public Calclator(int number) { this.number = number; } //二元重载 //访问修饰符 static 数据类型 operator 运算符(参数....) //{ //主体内容....... //} public static Calclator operator +(Calclator cl1, Calclator cl2) { Calclator cl3 = new Calclator(); cl3.number = cl1.number + cl2.number; return cl3; } public void SayHi() { Console.WriteLine("number:{0}",number); } } class Program { static void Main(string[] args) { Calclator c1 = new Calclator(100); Calclator c2 = new Calclator(50); Calclator c3 = new Calclator(); c3 = c1 + c2; c1.SayHi(); c2.SayHi(); c3.SayHi(); Console.ReadKey(); } } } —————————————————————————————————————————————————————————————————————————————————————————————— 案例3:二元重载例子 namespace e3 { class Calculator { int number1; int number2; public Calculator(int number1, int number2) { this.number1 = number1; this.number2 = number2; } public static Calculator operator -(Calculator c1) { c1.number1=-c1.number1; c1.number2 =-c1.number2; return c1; } public void Print() { Console.WriteLine("number1:{0}",this.number1); Console.WriteLine("number2:{0}", number2); } } class Program { static void Main(string[] args) { Calculator c1=new Calculator(20,-30); c1=-c1; c1.Print(); Console.ReadKey(); } } } —————————————————————————————————————————————————————————————————————————————————————————— 案例4:二元重载 注:加加++先赋值后计算! namespace e4 { struct NumberCount { public int i; public NumberCount(int i) { this.i = i; } public static NumberCount operator ++(NumberCount arg) { arg.i++; return arg; } } class Program { static void Main(string[] args) { NumberCount n1 = new NumberCount(0); NumberCount n2 = n1++;//加加在后是先赋值在计算 Console.WriteLine("n1.i:{0}", n1.i); Console.WriteLine("n2.i:{0}", n2.i); n2 = ++n1; Console.WriteLine("n1.i:{0}", n1.i); Console.WriteLine("n2.i:{0}", n2.i); Console.ReadKey(); } } } —————————————————————————————————————————————————————————————————————— 案例5: objetc 注:万类之根 namespace e5 { class Program { static void Main(string[] args) { //类型不报错 //万类之根:C#所有的数据类型(值类型和引用类型)都是从它衍生而来 object obj = "Welcome!"; obj = 100; obj = 3.1415926; obj = new Program(); } } }
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
案例1:动态数组实例化 using System; using System.Collections.Generic; using System.Text; //导入命名空间 using System.Collections; namespace e6 { class Program { static void Main(string[] args) { //动态数组实例化 ArrayList arr1 = new ArrayList(); ArrayList arr = new ArrayList(5);//可限制容量 arr.Add(10); arr.Add(2.366); arr.Add("zhangshang"); Console.WriteLine("索引0:"+arr[0]); Console.WriteLine("索引1:" + arr[1]); Console.WriteLine("索引2:" + arr[2]); Console.WriteLine("添加前容量"+arr.Capacity); arr.Add(1000); arr.Add("Test"); arr.Add(44.6); Console.WriteLine("添加后容量"+arr.Capacity);//容量不够自动添加 //数组是一个静态的数据结构,一旦定义后它的元素大小不能够改变 //动态数组是一个动态的数据结构 //动态数组可以不用去考虑他的容量问题,他会动态分配空间 Console.WriteLine("遍历"); //foreach 只针对数组或者集合遍历操作的循环 foreach (object obj in arr) { Console.Write(obj+" "); } Console.WriteLine("\n遍历"); //二者类似!循环! for (int i = 0; i < arr.Count; i++) { Console.Write(arr[i]+" "); } Console.ReadKey(); } } } —————————————————————————————————————————————————————————————————————————————————————————— 案例2 :集合和泛型1 namespace 集合和泛型1 { class Program { static void Main(string[] args) { //数组就是Array的对象 int[] arr ={ 102, 99, 150, 70, 100 }; Console.Write("排序前:"); foreach (int i in arr) { Console.Write(i+" "); } Array.Sort(arr); Console.Write("\n排序后:"); foreach (int i in arr) { Console.Write(i + " "); } //复制前面三个数 int[]destination=new int[arr.Length-2]; Array.Copy(arr, destination, arr.Length - 2); Console.WriteLine("\n复制后:"); foreach (int i in destination) { Console.Write(i+" "); } //反转 int[] arr2 ={ 100, 77, 200, 60, 80 }; Console.Write("\n反转前:"); foreach (int i in arr2) { Console.Write(i + " "); } Console.Write("\n反转后:"); Array.Reverse(arr2); foreach (int i in arr2) { Console.Write(i + " "); } //查找数组中的索引 Console.Write("\n查找数组中的索引:"); int index = Array.IndexOf(arr2, 60); Console.WriteLine("元素为60的索引:{0}",index); //修改索引的值 int[] arr3 = new int[3] { 500, 100, 400 }; Console.WriteLine("数组索引为1的值{0}",arr3.GetValue(1)); Console.Write("修改后:"); arr3.SetValue(300, 1); Console.WriteLine("数组索引为1的值{0}", arr3.GetValue(1)); Console.ReadKey(); } } }