C#基础篇第十一天

本文介绍了C#中的里氏转换概念,包括is和as的使用。接着讲解了ArrayList和Hashtable两种集合,强调键值对集合中键的唯一性。还探讨了foreach循环的特点,并提到了Path和File类在文件操作中的作用。

里氏转换

定义:
1.子类可以赋值给父类。

2.如果父类中装的是子类对象,那么可以将这个父类强转为子类对象。

            //1.子类可以赋值给父类;如果有一个地方需要一个父类作为参数,我们可以给一个子类代替
            Student S = new Student();
            Person P = S;    
            //2.如果父类中装的是子类对象,那么可以将这个父类强转为子类对象
            Student SS = (Student)P;//将P转化为Student对象
            SS.StudentSayhello();
            //Teacher T = (Teacher)P;//这样是不行的,因为P中不包含Teacher类的对象
            //T.TeacherSayhello();

is和as的用法:
is:表示类型转换,如果转换成功返回true,失败则返回false

            if (P is Student)
            {
                Student T = (Student)P;
                T.StudentSayhello();
            }
            else
            {
                Console.WriteLine("转换失败");
            }

as:表示类型转换,如果能够转换则返回对应的对象,否则返回一个null

            Student SS = P as Student;//转换成功
            Teacher T = P as Teacher;//转换失败

ArrayList集合

            ArrayList List = new ArrayList();
            List.Add("张三");//插入元素用add
            List.Add(true);
            List.Add(1);
            List.Add(3);
            List.Add(2);
            List.Add('a');
            List.AddRange(new int[] { 1, 2, 3 });//插入集合用addrange
            List.Clear();//移除所有元素
            List.Remove(true);//移除特定的元素
            List.RemoveAt(0);//移除指定索引的元素
            List.RemoveRange(0, 3);//移除一定范围的元素
            List.Sort();//对集合进行排序
            List.Reverse();//将这个集合顺序反转
            List.Insert(1, '张');//在指定索引处插入元素
            List.InsertRange(1, new[] { 1, 3, 2 });//在指定索引处插入集合
            bool a= List.Contains('a');//判断某元素是否在集合中
            Console.WriteLine(a);
            for (int i = 0; i < List.Count; i++)
            {
                Console.WriteLine(List[i]);
            }
            Console.ReadKey();

Hashtable集合

在键值对集合中,我们是根据键去找值的。
键值对集合中键必须是唯一的,而值可以是重复的。

            //创建一个键值对集合的对象
            Hashtable ht = new Hashtable();
            ht.Add(1, 1);
            ht.Add(2, "张三");
            ht.Add(3, "zhangsan");
            ht.Add(false, "李四");
            ht[3] = "王五";//会把键是3的替换掉
            bool a = ht.ContainsKey(1);//判断是否包含指定的键,是就返回true
            bool b = ht.ContainsValue("张三");//判断是否包含指定的值,是就返回true
            ht.Clear();//移除所有元素
            Console.WriteLine(a);
            Console.WriteLine(b);
            foreach (var i in ht.Keys)
            {
                Console.WriteLine("{0}的值是{1}",i,ht[i]);
            }

foreach循环

        foreach (var 变量声明 in 数组名)

foreach和for循环有两种不同:一是它没法取得当前元素在数组中的下标,二是不能改变元素,只能取得元素,在一定意义上它是“只读性遍历”。

Path

            string str = @"E:\C#\1\zhang.txt";
            string address = Path.GetFileName(str);//获得当前文件
            string address = Path.GetFileNameWithoutExtension(str);//获得当前文件但是不包括扩展名
            string address = Path.GetExtension(str);//获得文件的扩展名
            string address = Path.GetDirectoryName(str);//获得文件所在的文件夹的路径
            string address = Path.GetFullPath(str);//获得全路径
            string address = Path.Combine(@"c:a/b/c/", @"d.txt");//将两个字符串组合成一个路径
            Console.WriteLine(address);

File

            File.CreateText(@"E:\C#\1\li.txt");//创建文件
            File.Delete(@"E:\C#\1\li.txt");//删除文件
            File.Copy(@"E:\C#\1\zhang.txt", @"E:\C#\li.txt");//复制文件

将字符数组转换成字符串:Encoding.Default.GetString();
将字符串转换成字符数组:Encoding.Default.GetBytes();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值