重工电子论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
楼主: 李钢-15级
打印 上一主题 下一主题

[C#] 学习c# --笔记

[复制链接]

12

主题

130

帖子

470

积分

版主

Rank: 7Rank: 7Rank: 7

积分
470
41#
 楼主| 发表于 2016-5-29 20:38:58 | 只看该作者
本帖最后由 李钢-15级 于 2016-5-30 11:20 编辑

filestream 操作字节
例  对多媒体文件进行复制
using (FileStream fsRead = new FileStream(soucre(路径), FileMode.Open, FileAccess.Read))//使用using是实现自动清除内存的功能
            {
                //2、创建一个负责写入的流
                using (FileStream fsWrite = new FileStream(target, FileMode.OpenOrCreate, FileAccess.Write))
                {
                    byte[] buffer = new byte[1024 * 1024 * 5];
                    //因为文件可能会比较大,所以我们在读取的时候 应该通过一个循环去读取
                    while (true)
                    {
                        //返回本次读取实际读取到的字节数
                        int r = fsRead.Read(buffer, 0, buffer.Length);//5m,读取内存的大小
                        //如果返回一个0,也就意味什么都没有读取到,读取完了
                        if (r == 0)
                        {
                            break;
                        }
                        fsWrite.Write(buffer, 0, r);  //写入流的大小
                    }

streamreader  streamwriter(只适用于文本文件)

QMF}U{EUVY_%YZKLWU){PL0.png (47.56 KB, 下载次数: 1175)

QMF}U{EUVY_%YZKLWU){PL0.png

`[OJH}10H}O(V1BYMCJ)QS0.png (27.68 KB, 下载次数: 1128)

`[OJH}10H}O(V1BYMCJ)QS0.png
回复 支持 反对

使用道具 举报

12

主题

130

帖子

470

积分

版主

Rank: 7Rank: 7Rank: 7

积分
470
42#
 楼主| 发表于 2016-5-29 22:10:06 | 只看该作者
本帖最后由 李钢-15级 于 2016-5-30 12:46 编辑

多态(一个对象多个类型)
一个父类,多个子类都有sayhellow的方法。那么可以利用多态来弄 虚构方法来构建多态

0FDF@BDL8AUIM`]]R3OTRHC.png (24.24 KB, 下载次数: 1143)

0FDF@BDL8AUIM`]]R3OTRHC.png

[Q3EKWI$@6)8B3B[RH4`WHB (2).png (8.09 KB, 下载次数: 1141)

[Q3EKWI$@6)8B3B[RH4`WHB (2).png

DJEJ)T(F0O~[)9KW(}41KU4.png (8.62 KB, 下载次数: 1164)

DJEJ)T(F0O~[)9KW(}41KU4.png

GVJRL3L5J0@CHF~BK60L`C7.png (11.58 KB, 下载次数: 1163)

GVJRL3L5J0@CHF~BK60L`C7.png
回复 支持 反对

使用道具 举报

12

主题

130

帖子

470

积分

版主

Rank: 7Rank: 7Rank: 7

积分
470
43#
 楼主| 发表于 2016-5-30 13:18:36 | 只看该作者
本帖最后由 李钢-15级 于 2016-5-30 15:24 编辑

抽象类 的方法来实现多态(子类方法不同)
abstract 关键字  没有方法体
public abstract void bark();这个方法没有意义,如果能写的话,则用虚方法来实现
子类的写法和虚方法一样。
但是抽象类不能创建对象。
只能是
animal   A = new cat();
A.bark(此时,调用的是猫里面的方法)


抽象类,里面可以有抽象成员以及非抽象成员
2.抽象成员必须在抽象类中。
3.抽象类不能被实例化

4.子类继承抽象类后,必须把父类中的所有抽象成员都重写。

(除非子类也是一个抽象类,则可以不重写)
5.抽象成员的访问修饰符不能是private
6.在抽象类中可以包含非抽象类成员。
7抽象类是有构造函数的。虽然不能被实例化。
8、如果父类的抽象方法中有参数,那么。继承这个抽象父类的子类在重写父类的方法的时候必须传入对应的参数。
如果抽象父类的抽象方法中有返回值,那么子类在重写这个抽象方法的时候 也必须要传入返回值。
======
如果父类中的方法有默认的实现,并且父类需要被实例化,这时可以考虑将父类定义成一个普通类,用虚方法来实现多态。

如果父类中的方法没有默认实现,父类也不需要被实例化,则可以将该类定义为抽象类。
回复 支持 反对

使用道具 举报

12

主题

130

帖子

470

积分

版主

Rank: 7Rank: 7Rank: 7

积分
470
44#
 楼主| 发表于 2016-5-30 20:21:57 | 只看该作者
本帖最后由 李钢-15级 于 2016-5-30 20:37 编辑

c#中的访问修饰符
internal 只能在当前项目中访问
protected  子类才可以用用,可以跨项目
回复 支持 反对

使用道具 举报

12

主题

130

帖子

470

积分

版主

Rank: 7Rank: 7Rank: 7

积分
470
45#
 楼主| 发表于 2016-5-30 20:46:56 | 只看该作者
本帖最后由 李钢-15级 于 2016-5-31 10:14 编辑

值类型(zhan)和引用类型(堆)
值类型赋值是直接给值,而引用类型是赋的地址。

person p1 = new person()
person p2 = new person()
p1=p2,那么p1 和p2都指向同一对象(p1 p2 存的地址,地址指向堆上的空间)同理,如果把pi 传递到函数当中,值也会改变,就像是传递了地址,这与int类型不一样,但是与ref int一致。ref代表的是传递地址


一个查看变量地址的方法

QQ图片20160531100523.png (163.83 KB, 下载次数: 1115)

QQ图片20160531100523.png
回复 支持 反对

使用道具 举报

12

主题

130

帖子

470

积分

版主

Rank: 7Rank: 7Rank: 7

积分
470
46#
 楼主| 发表于 2016-5-30 21:55:29 | 只看该作者
本帖最后由 李钢-15级 于 2016-5-31 10:21 编辑

序列化,将对象转换成二进制  传送到对方电脑
[serizeable]

//要将p这个对象 传输给对方电脑
            //Person p = new Person();
            //p.Name = "张三";
            //p.Age = 19;
            //p.Gender = '男';
            //using (FileStream fsWrite = new FileStream(@"C:\Users\SpringRain\Desktop\111.txt", FileMode.OpenOrCreate, FileAccess.Write))//将p这个对象写入这个文件
            //{
            //    //开始序列化对象
            //    BinaryFormatter bf = new BinaryFormatter();
            //    bf.Serialize(fsWrite, p);//写入


反序列化,将二进制转换成对象 将接收到的二进制流转换成对象
             Person p;//建立一个新的类型用于接收,反序列化后的p
            using (FileStream fsRead = new FileStream(@"C:\Users\SpringRain\Desktop\111.txt", FileMode.OpenOrCreate, FileAccess.Read))
            {
                BinaryFormatter bf = new BinaryFormatter();
                p = (Person)bf.Deserialize(fsRead);
            }
            Console.WriteLine(p.Name);
            Console.WriteLine(p.Age);
            Console.WriteLine(p.Gender);
            Console.ReadKey();
        }
    }
回复 支持 反对

使用道具 举报

12

主题

130

帖子

470

积分

版主

Rank: 7Rank: 7Rank: 7

积分
470
47#
 楼主| 发表于 2016-5-30 22:43:13 | 只看该作者
本帖最后由 李钢-15级 于 2016-5-30 22:57 编辑

部分类
在同一个命名空间下不能用同一个类,但是加上关键字partial  就可以了
私有字段在不同的parital类中可以访问(因为它们本来就属于一个类)


密封类
加关键字 sealed  是不能被继承,但是可以继承别的
回复 支持 反对

使用道具 举报

12

主题

130

帖子

470

积分

版主

Rank: 7Rank: 7Rank: 7

积分
470
48#
 楼主| 发表于 2016-5-30 22:57:47 | 只看该作者
本帖最后由 李钢-15级 于 2016-5-31 10:40 编辑

复习 tostring (之所以都可以用到,因为包含tostring 的这个类是object的。是父类)
重写tostring(之所以能改因为这个方法是虚方法,为什么不是抽象的,因为子类是不可以调用父类的抽象方法的,一切类都是object的子类)
             int a =2;
            string a1 = a.ToString();//原始的


            Person p = new Person();
            Console.WriteLine(p.ToString());
            Console.WriteLine(a1);
            Console.ReadKey();
        }
    }

    public class Person
    {
        public override string ToString()//重写
        {
            return "Hello World";
        }
    }
}



回复 支持 反对

使用道具 举报

12

主题

130

帖子

470

积分

版主

Rank: 7Rank: 7Rank: 7

积分
470
49#
 楼主| 发表于 2016-5-31 10:53:19 | 只看该作者
本帖最后由 李钢-15级 于 2016-5-31 14:14 编辑

接口(找不到父类,能力相同时)
interface
   IFlyable fly = new Bird();
            fly.Fly();//birdl类调用接口
            Bird bird = new Bird();
            bird.Fly();//应用bird类当中的fiy
            Console.ReadKey();
        }
public class Bird : IFlyable//接口的申明
    {
        public void Fly()
        {
            Console.WriteLine("鸟飞会");
        }
        /// <summary>
        /// 显示实现接口(因为这里重名了)
        /// </summary>
         void IFlyable.Fly()
        {
            Console.WriteLine("我是接口的飞");
        }

    }

  public interface IFlyable//接口的声明
    {
        void Fly();
    }
回复 支持 反对

使用道具 举报

12

主题

130

帖子

470

积分

版主

Rank: 7Rank: 7Rank: 7

积分
470
50#
 楼主| 发表于 2016-6-1 09:00:25 | 只看该作者
本帖最后由 李钢-15级 于 2016-6-1 12:42 编辑

开始winform啦

桌面应用程序  后台程序可以右键切换到窗口

_]K27{XM{72P}6]9NJFPT.png (194.03 KB, 下载次数: 1141)

_]K27{XM{72P}6]9NJFPT.png

7(EW@[IE7`CT}}_~Y~E)%MH.png (75.75 KB, 下载次数: 1148)

7(EW@[IE7`CT}}_~Y~E)%MH.png
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|cqutlab ( 渝ICP备15004556号

GMT+8, 2024-5-3 17:11 , Processed in 0.184936 second(s), 30 queries .

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表