static void Test2(PersonTest p, int i) { p.Name = "zzz"; i = 100; }
static void Test3(ref PersonTest p, ref int i) { p = new PersonTest(); p.Name = "ttt"; i = 100; }
static void Main(string[] args) { ////4密闭类和静态类及扩展方法(静态方法) //Person p1 = new Person(); //p1[1, 2] = "abc"; //string result = p1[3, 5]; //Console.WriteLine(result); Console.WriteLine("----------------"); Dog d1 = new Dog(); d1["wangwang"] = 12; int resultDog = d1["hahaha"]; Console.WriteLine(resultDog); //Console.WriteLine("*****@*****.**".IsEmail()); //Console.WriteLine("ABC".Repeat(10)); ////等价于Console.WriteLine(Helper.Repeat("ABC",5)); ////5深copy和浅copy //PersonTest p1 = new PersonTest(); //p1.Name = "ABC"; //p1.Age = 10; //PersonTest p2 = p1;//让p2指向当前p1对象 只有一个对象 //PersonTest p3 = new PersonTest(); //复制了一份 两个对象,互相不影响 //p3.Name = p1.Name; //p3.Age = p1.Age; //PersonTest p4 = new PersonTest(); //p4.Name = "abc"; //p4.Age = 3; //DogTest dog1 = new DogTest(); //dog1.Name = "wangcai"; //p4.dog = dog1; //PersonTest p5 = new PersonTest(); //p5.Name = p4.Name; //p5.Age = p5.Age; //p5.dog = p4.dog;//浅copy //DogTest dog2 = new DogTest();//深copy //dog2.Name = dog1.Name; //p5.dog = dog2; ////6结构体、值类型及引用类型 //DogTest objDog1 = new DogTest(); //objDog1.Name = "aaa"; //DogTest objDog2 = objDog1; //objDog1.Name = "bbb"; //Console.WriteLine(objDog2.Name); //DogStruct objdog1s = new DogStruct(); //objdog1s.Name = "aaa"; //DogStruct objdog2s = objdog1s; //objdog1s.Name = "bbb"; //Console.WriteLine(objdog2s.Name); //int[] nums = { 1, 3, 5, 7, 9 }; //Test(nums); //Console.WriteLine(nums[1]); ////9关于相等 //DogTest dog1 = new DogTest(); //dog1.Name = "wangwang"; //DogTest dog2 = dog1; //DogTest dog3 = new DogTest(); //dog3.Name = "wangwang"; //DogTest dog4 = new DogTest(); //dog4.Name = "wangwang"; //Console.WriteLine(object.ReferenceEquals(dog1,dog2)); //Console.WriteLine(object.ReferenceEquals(dog1, dog3)); //Console.WriteLine(dog1.Equals(dog4));//重载Equal方法 //Console.WriteLine(dog1==dog4);//重载==运算符和!=运算符 //Console.WriteLine(dog1==dog2); //Console.WriteLine(dog1==dog3); //string s1 = "abc"; //string s2 = s1; //string s3 = new string(new char[] { 'a','b','c'}); //Console.WriteLine(object.ReferenceEquals(s1,s2)); //Console.WriteLine(object.ReferenceEquals(s1,s3)); //Console.WriteLine(s1==s2); //Console.WriteLine(s1==s2); ////10字符串缓冲池 //string s1 = "abc"; //string s2 = "abc"; //string s3 = "a" + "b" + "c"; //string s4 = new string(new char[] { 'a', 'b', 'c' }); //Console.WriteLine(object.ReferenceEquals(s1, s2)); //Console.WriteLine(object.ReferenceEquals(s1, s3)); //Console.WriteLine(object.ReferenceEquals(s1, s4)); //ref和out关键字 PersonTest p = new PersonTest(); p.Name = "abc"; int i = 5; Test2(p, i);//引用类型和值类型在方法内部传参调用时的不同 Console.WriteLine(p.Name); Console.WriteLine(i); Test3(ref p, ref i); Console.WriteLine(p.Name); Console.WriteLine(i); int ii; Test4(out ii); Console.WriteLine(ii); Console.ReadLine(); }