zoukankan      html  css  js  c++  java
  • C#学习笔记

    读取 Console.ReadKey();
    References项包含项目中使用的一个.NET库列表
    弹出消息对话框MessageBox.Show(“”);
    事件用 += ,表示注册, += new 一个事件处理器
    Object sender 表示谁发生了这个事件
    Eventargs 事件的对象
    随机数 Random rnd = new Random(); rnd.Next(255) //0~255的随机数
    组件里面的timer对象 ,不显示,相当于闹钟一样 属性 Interval,时间间隔,单位是毫秒,要把enable改为True
    控制台应用程序如果按F5会一闪而过,那么可以用CTRL+F5
    Console.Writeline(“aaa”), 读入 Console.Readline()
    Console.Writeline(“ {0}, {1}”,a, b); {0}表示第0个参数
    事件驱动的编程机制
    Web应用程序也成为ASP.NET应用程序
    将文本解析为实数 double a = double.Parse(textBox1.Text)
    由于C#自动进行对象的释放,所以用户一般不定义析构方法
    private string _name //字段
    public string Name {
    get {return _name;}
    set {_name = value}
    }


    class A {
    public int a;
    }
    //继承A,覆盖a要用new
    class B:A {
    new public int a;
    }
    //访问父类的方法
    base.sayHello();

    //如果不能转换,那么值就是null
    Student s1 = s2 as Student;
    //is 运算符
    if (p is Person)

    //访问控制符
    internal //相同程序集的非子类也可以访问
    static 也可以修饰构造方法,表示构造某一类,只会调用一次,调用时间不确定
    readonly 相当于不可改变量,只可以覆一次值,在构造或在声明的时候赋值,只能修饰字段
    sealed 表示不可继承
    abstract 表示不可以实例化
    interface 接口,一个引用类型,比抽象类更抽象,帮助实现多重继承(因为C#只是单继承),实现不相关类的相同行为
    通过接口可以了解对象的交互界面,而不需要了解对象所对应的类,习惯上都已i字母开头
    定义一个接口
    public interface IstringList {
    void Add(string);
    int Count {get;}
    string this[int index] {get; set;}
    }//这里 public abstract 两个关键字不写出来 ,因为默认就是public abstract
    当多个接口有相同的方法的时候,继承接口的类在实现方法的时候在前面加上接口名
    如void Iwindow.Close()
    那么在调用的时候用强制类型转换 ( (Iwindow) p ).Close(); 就可以调用Iwindow接口的Close方法
    strcut和class的区别:struct是值类型,它不能包含无参数的构造方法,字段在定义时不能给初始值,构造方法中必须对每一个字段赋值
    枚举实际上是有意义的整数

    delegate 委托,实际上就是函数指针,对函数原型的包装,是引用类型,一种类型,而事件不是类型
    public delegate double Mydelegate(double x);
    实例化
    Mydelegate d2 = new Mydelegate(obj.myMethod) //括号里面是某个对象/类的某个方法,把这个方法给包装起来

    委托的合并--多播MultiCastDelegate:
    一个委托可以包含多个函数,返回值没有意义,没有先后顺序,用+= -=
    不同的委托是不能相互转换的,意思就是委托与委托不能相加减

    事件相当于回调函数
    this.button1.Click += new System.EventHandler(this.button1_click);
    也可以:
    this.button1.Click += this.button1_click;//不能认为是加了一个函数,而是编译器把这个函数转化为委托
    private void button1_click(object sender, EventArgs e) { //sender 谁发生了这个事件, e 事件参数
    ....
    }
    事件的声明
    public event 委托名 事件名
    定义及使用事件六部曲
    1.声明事件参数类 class xxxEventArgs{}
    2.声明委托 delegate void xxxEventHandler(obj, args)
    3.定义事件 public event 类型 名称 //在一个类中
    4.发生事件:事件名(参数) //在一个类中
    5.定义一个方法: void 方法名(obj, args) //在别的类中
    6.注册事件: xxx.事件 += new 委托(方法名 ) //在别人的类中
    使用系统的事件如(Click)是比较容易的(在Visual Studio中只要在+=后面按两次Tab键)
    事件在类外置能用+= -=

    可以定义事件的存取器
    修饰符 event 委托类型名 事件名 {
    add {e += value;}
    remove {e -= value;} //实际编程中不用写add remove
    }

    匿名函数 delegate(参数){方法体}
    可以被隐式转换为一个兼容的委托类型
    lamda表达式相当于匿名方法的简写,省略delegate,甚至省略参数类型:
    直接用 (参数)=>{} 或者 x=>x*x;
    匿名函数多一个功能:不写(参数)的匿名函数可以专程任意多个参数的委托

    Linq:language Integrated Query
    var m = from c in customers where c.Age > 10 orderby c.Name select new {c.Name, c.Phone}
    另一种写法
    var m = customers
    .Where c.Age > 10
    .Orderby c.Name
    .Select new {c.Name, c.Phone};

    类型转换运算符声明形式
    public static implicit operator 类型(类型 参数名) {} //隐式转换
    public static explicit operator 类型(类型 参数名) {} //强制转换

    异常处理
    如果try子句中有return语句,则finally子句也会执行
    try {....}
    catch(Exception e) {...}
    finally {....}
    System.Exception类
    在catch异常时,子类异常(更具体的异常)在写到父类异常(更一般的异常)的前面。
    抛出异常 throw expression

  • 相关阅读:
    有符号数与无符号数的转换
    二进制的反码
    c 位运算
    安装和使用PhantomJS
    SecureCRT图形界面
    php curl模拟登陆抓取数据
    sublime text 3 配置方法
    chrome不支持12px,解决办法
    对下拉的一些操作记录
    Vue tree自定义事件注意点
  • 原文地址:https://www.cnblogs.com/linjj/p/4338399.html
Copyright © 2011-2022 走看看