零基础c#学习day9【笔记】

1.FileStream文件流

使用FileStream来读取数据:

FileStream fsread = new FileStream(@"E:\系统默认\桌面\文件类测                   试.txt",FileMode.OpenOrCreate,FileAccess.ReadWrite);
            byte[] butter = new byte[1024 * 1024 * 5];
            //3.8M   5M
            int r =   fsread.Read(butter,0,butter.Length);
            //返回此次实际读到的有效字节数;

            string s = Encoding.UTF8.GetString(butter,0,r);
            //将文件中每一个元素按指定编码转化为字符串;

            fsread.Close();//关闭文件流

            fsread.Dispose();//释放文件流所占用的资源

            Console.WriteLine(s);
            Console.ReadKey();

使用FileStream来写入数据:

 using (FileStream fswrite = new FileStream(@"E:\系统默认\桌面\文件类测试.txt", FileMode.OpenOrCreate, FileAccess.Write))
            {
                string str = "看我有没有把你覆盖";
                byte[] butter = Encoding.UTF8.GetBytes(str);
                fswrite.Write(butter, 0, butter.Length);


            }
            Console.WriteLine("写入成功");
            Console.ReadKey();

2.自动释放资源

将创建的文件流对象的过程写在using中,会自动帮助我们释放流所占用的资源;

3.多态

概念:让一个对象能够表现出多种的状态(类型)

方法:

1.虚方法 :把父类函数标记为virtual 子类标记为override

实现代码:

class Program
    {
        static void Main(string[] args)
        {

            //狗狗会叫 猫咪也会叫
            Anlime an = new Anlime();
            Cat be = new Cat();
            Dog ca = new Dog();
            Anlime[] ane = { an, be, ca };
            for (int i = 0; i < ane.Length; i++)
            {
                ane[i].anlime();
            }
            Console.ReadKey();
        }

    }

    public  class Anlime
    {
        public virtual void anlime()
        {
            Console.WriteLine("动物会叫");
        }
    }

    public class Dog : Anlime
    {
        public override void anlime()
        {
            Console.WriteLine("狗狗会叫");
        }
    }

    public class Cat : Anlime
    {
        public override void anlime()
        {
            Console.WriteLine("猫咪也会叫");
        }
    }

2.抽象类 :当父类中的方法不知道如何去实现的的时候,可以考虑将父类写成抽象类abstract,将方法写成抽象方法,抽象类的方法没有方法体,且抽象类的对象不能被创建

实现代码:

class Program
    {
        static void Main(string[] args)
        {

            //狗狗会叫 猫咪也会叫
            Anlime an = new Dog();
            Anlime be = new Cat();
            an.anlime();
            be.anlime();
            Console.ReadKey();
        }

    }

    public abstract class Anlime
    {
        public abstract void anlime();
    }

    public class Dog : Anlime
    {
        public override void anlime()
        {
            Console.WriteLine("狗狗会叫");
        }
    }

    public class Cat : Anlime
    {
        public override void anlime()
        {
            Console.WriteLine("猫咪也会叫");
        }
    }
class Program
    {
        static void Main(string[] args)
        {
            // 使用多态求矩形的面积和周长以及圆形的面积和周长
            Shape an = new Juxing(1,3);
            Shape be = new Yuan(4);
            double zhou = an.Zhou();
            double mian = an.Mian();
            double zhou1 = be.Zhou();
            double mian1 = be.Mian();

            Console.WriteLine("矩形的周长是{0} 面积是{1};圆形的周长是{2}面积是{3}", zhou, mian, zhou1, mian1);

            Console.ReadKey();

        }
        public abstract class Shape//shape的抽象类
        {
            public abstract double Zhou();
            public abstract double Mian();//两个抽象方法

        }

        public class Juxing : Shape//矩形类
        {
    
            private double _a;//字段_a

            public double a//字段a的属性
            {
                get { return _a; }
                set { _a = value; }
            }

            private double _b;//字段_b

            public double b//字段b的属性
            {
                get { return _b; }
                set { _b = value; }
            }

            public Juxing (double a ,double b)
            {
                this.a = a;
                this.b = b;
            }



            public override double Zhou()
            {
                return (this.a + this.b) * 2;
            }
            public override double Mian()
            {
                
                return this.a * this.b;
            }

        }

        public class Yuan : Shape//圆形类
        {

            private double _r;

            public double r
            {
                get { return _r; }
                set { _r = value; }
            }

            public Yuan(double r)
            {
                this.r = r;
            }




            public override double Zhou()
            {
                return 2 * 3.14 * this.r;
            }
            public override double Mian()
            {
                return 3.14 *this.r * this.r;
            }

        }
}

4.绝对路径和相对路径

绝对路径:通过给定的这个路径直接能在我的电脑中找到

相对路径:文件相对于应用程序的路径

我们在开发中应该使用相对路径

5.装箱|拆箱

装箱:就是将值类型转换为引用类型

拆箱:就是将引用类型转换为值类型

看两种类型是否发生了装修或者拆箱,要看这两种类型是否存在继承关系

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值