c#自学之路第十三天

c#自学之路第十三天

一、笔记

1.里氏转换

1)子类可以赋值给父类:如果有一个地方需要一个父类作为参数,我们可以给一个子类代替
2)如果父类装的是子类对象,那么可以讲这个父类强转为字类对象。

2.子类对象可以调用父类成员,但是父类对象只能调用自己的成员

3.在做里氏转换的时候,由于只要转换不对就会抛出异常,因此需要在转换的时候做判断,分别是用 is 或者 as.

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

4.protected访问修饰符

受保护的,可以在当前类的内部以及该类的子类中访问。

5.如果给集合添加单个数据的时候用 list.Add();

如果添加集合或数组用list.AddRange();
//list.Clear();//清除所有元素
//list.Remove(true);//删除单个元素 写谁就删谁,按值删除
//list.RemoveAt(0);//删除单个元素,按下标删除,
//list.RemoveRange(0,2); //根据索引,删除一定范围的元素
//list.Sort();升序排序
//list.Reverse();反转
//list.Insert(1, “sss”);在下标前面插入单个数据
//list.InsertRange(0, new string[] { “张三” });在下标前面插入一个数组或集合
//list.Contains(1);判断是否包含某个指定元素;

6.集合长度问题

count 表示这个集合中实际包含的元素个数
capcity 表示这个集合中可以包含的元素的个数
当实际包含的元素个数超过可以包含的元素个数,集合就会向内存中多开一倍的空间,保证够用

二、代码

1、

namespace 里氏转换
{
    class Program
    {
        static void Main(string[] args)
        {
           // Student s = new Student();
            Person p = new Student();
            //Student ss = (Student)p;
            //ss.StudentSayHello();

            //is 的用法
            //if(p is Teacher)
            //{
            //    Teacher ss = (Teacher)p;
            //    ss.TeacherSayHello();
            //}
            //else
            //{
            //    Console.WriteLine("转换失败");
            //}
            //if(p is Student)
            //{
            //    Student ss = (Student)p;
            //    ss.StudentSayHello();
            //}
            //else
            //{
            //    Console.WriteLine("转换失败");
            //}

            //as 的用法
            Student t = p as Student;
            t.StudentSayHello();

            Console.ReadKey();

        }
        public class Person
        {
            public void PersonSayHello()
            {
                Console.WriteLine("我是父类");
            }
        }
       public class Student:Person
        {
            public void StudentSayHello()
            {
                Console.WriteLine("我是学生");
            }
        }
        public class Teacher : Person
        {
            public void TeacherSayHello()
            {
                Console.WriteLine("我是老师");
            }
        }
        
    }
}

namespace 里氏转换练习
{
    class Program
    {
        static void Main(string[] args)
        {
            Person[] pers = new Person[10];
            Random r = new Random();
            for(int i=0;i<pers.Length;i++)
            {
                int rNumber = r.Next(1, 7);
                switch(rNumber)
                {
                    case 1:pers[i] = new Student();
                        break;
                    case 2:pers[i] = new Teacher();
                        break;
                    case 3:pers[i] = new Belle();
                        break;
                    case 4:pers[i] = new Beast();
                        break;
                    case 5:pers[i] = new HandsomerBoy();
                        break;
                    case 6:pers[i] = new Person();
                        break;
                }
            }
            for(int i=0;i<pers.Length;i++)
            {
                if(pers[i] is Student)
                {
                    ((Student)pers[i]).StudentSayHi();
                }
                else if(pers[i] is Teacher)
                {
                    ((Teacher)pers[i]).TeacherSayHi();
                }
                else if(pers[i] is Belle)
                {
                    ((Belle)pers[i]).BelleSayHi();
                }
                else if(pers[i] is Beast)
                {
                    ((Beast)pers[i]).BeastSayHi();
                }
                else if(pers[i] is HandsomerBoy)
                {
                    ((HandsomerBoy)pers[i]).HandsomeBoySayHi();
                }
                else
                {
                    pers[i].PersonSayHi();
                }
            }
            Console.ReadKey();
        }

    }
    public class Person
    {
        public void PersonSayHi()
        {
            Console.WriteLine("我是人类");
        }
    }
    public class Student:Person
    {
        public void StudentSayHi()
        {
            Console.WriteLine("我是学生");
        }
    }
    public class Teacher:Person
    {
        public void TeacherSayHi()
        {
            Console.WriteLine("我是老师");
        }
    }
    public class Belle:Person
    {
        public void BelleSayHi()
        {
            Console.WriteLine("我是美女");
        }
    }
    public class HandsomerBoy:Person
    {
        public void HandsomeBoySayHi()
        {
            Console.WriteLine("我是帅哥");
        }
    }
    public class Beast:Person
    {
        public void BeastSayHi()
        {
            Console.WriteLine("我是野兽");
        }
    }
}

namespace ArrayList集合
{
    class Program
    {
        static void Main(string[] args)
        {
            //创建一个集合对象
            ArrayList list = new ArrayList();
            //集合:很多类型的一个集合
            //数组:长度不可变,类型单一
            //集合的好处:长度可以任意改变 类型随便
            list.Add(1);
            list.Add(3.14);
            list.Add(true);
            list.Add("张三");
            list.Add(5000m);
            list.Add(new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 });
            Person p = new Person();
            list.Add(p);
            list.AddRange(new int[] { 12,33,44});

            //list.Clear();//清除所有元素
            //list.Remove(true);//删除单个元素 写谁就删谁,按值删除
            //list.RemoveAt(0);//删除单个元素,按下标删除,
            //list.RemoveRange(0,2); //根据索引,删除一定范围的元素
            //list.Sort();升序排序
            //list.Reverse();反转
            //list.Insert(1, "sss");在下标前面插入单个数据
            //list.InsertRange(0, new string[] { "张三" });在下标前面插入一个数组或集合
            //list.Contains(1);判断是否包含某个指定元素;
            for(int i=0;i<list.Count;i++)
            {
                if (list[i] is Person) 
                {
                    ((Person)list[i]).SayHello();
                }
                else if(list[i] is int[])
                {
                    for(int j=0;j<((int[])list[i]).Length;j++)
                    {
                        Console.WriteLine(((int[])list[i])[j]);
                    }
                }
                else
                {
                    Console.WriteLine(list[i]);
                }
               // Console.WriteLine(list[i]);

            }
            Console.ReadKey();
        }
    }
    public class Person
    {
        public void SayHello()
        {
            Console.WriteLine("我是人类");
        }
    }
}

namespace ArrayList集合练习
{
    class Program
    {
        static void Main(string[] args)
        {
            #region//创建一个集合,里面添加一些数字,求平均数,和,最大值和最小值
            //ArrayList list = new ArrayList();
            //list.AddRange(new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9});
            //int sum=0;
            //int max = (int)list[0],min = (int)list[0];
            //for(int i=0;i<list.Count;i++)
            //{
            //    if(max<(int)list[i])
            //    {
            //        max = (int)list[i];
            //    }
            //    if(min>(int)list[i])
            //    {
            //        min = (int)list[i];
            //    }
            //    sum += (int)list[i];
            //}
            //Console.WriteLine("总和为:{0}", sum);
            //Console.WriteLine("平均数为{0}", sum / list.Count);
            //Console.WriteLine("最大值为{0}", max);
            //Console.WriteLine("最小值为{0}", min);
            //Console.ReadKey();
            #endregion

            //写一个长度为10的集合,要求在里面随机地存放10个数字(0-9)
            //但是要求所有的数字不重复
            ArrayList list = new ArrayList();
            Random r = new Random();
            for(int i=0;i<10;i++)
            {
                int rNumber = r.Next(0, 10);
                if(!list.Contains(rNumber))
                {
                    list.Add(rNumber);
                }
                else
                {
                    i--;
                }
            }
            for(int i=0;i<list.Count;i++)
            {
                Console.WriteLine(list[i]);
            }
            Console.ReadKey();

        }
    }
}

namespace Arraylist集合长度问题
{
    class Program
    {
        static void Main(string[] args)
        {
            ArrayList list = new ArrayList();
            //count  表示这个集合中实际包含的元素个数
            //capcity 表示这个集合中可以包含的元素的个数   
            //        当实际包含的元素个数超过可以包含的元素个数,集合就会向内存中多开一倍的空间
            Console.WriteLine(list.Capacity);
            Console.WriteLine(list.Count);
            Console.ReadKey();
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

逆火重生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值