zoukankan      html  css  js  c++  java
  • C#学习笔记一(概念,对象与类型,继承)

    一.基础

    1.CLR为公共语言运行库,类似于JVM

    2..NET Framwork是一个独立发布的程序包,其包含了CLR,类库及相关的语言编辑器等工具,类似于JDK,除了C#,还有其他几种语言在CLR上运行。

     二.核心

    1.using static 空间名.类名;可以将一个类的静态方法暴露出来直接调用。

    2.每个C#可执行文件都必须有一个入口点Main()方法,如果有多个类都有Main方法,那么只执行其中一个。可以在项目属性里面设置Main的参数。

    3.任何变量必须赋值(初始化)之后才能使用。

    4.var是推断类型,系统会根据var的初始化的值的类型确定其类型。

    5.声明常量的方式为const int a=2; 常量可以在方法或者类成员中定义,类成员常量总是隐式静态的,不允许添加修饰符static。

    6.在语法上可以把所有的基本数据类型看成支持某些方法的类。例如把int i转换成string类型,string s=i.ToString();但是实际上i仍然存储为基本类型。

    7.string是一个引用类型。string对象被分配在堆上而不是栈上,因此档把一个字符串变量赋予另一个字符串时,会得到同一个字符串的两个引用。但是,string与引用类型的常见行为有些区别。例如,字符串是不可改变的,修改其中一个字符串,就会创建一个全新的string对象,而另一个字符串不发生任何变化。从这一点上有点类似值类型。

    8.转义字符@的使用 string path=“C:\a\d.text”;等价于string path=@“C:ad.text”; 同时这里还支持使用直接换行。

       转义字符$允许把花括号放在一个包含变量或者表达式代码的字符串中。例如 string s=“hello world”; console.WriteLine($"我要输出 {s} ");

    9.关于C#中switch语句,case后面执行语句后没有break语句的会被标记为错误,如果一个执行语句为空,且没有break,就会自动跳到下一个case,关于这点的使用懒得写,看书;case的位置是无关紧要的,甚至可以把default放在最前面。switch的case 支持变量,但是case的变量不能相等。

    10.foreach循环不能改变集合的中各项的值,如果需要应使用for循环(如果各项的值是引用类型好像能改变)。

    11.命名空间的一般规则为:公司名.项目名.功能名。

        可以在using语句上给较长的命名空间起一个较短的别名,从而减少编码的长度。但是使用命名空间中的类时,使用::符号,如,别名::类名 a=new 别名::类名();

    12.在命名规则内C#支持任何Unicode字符组合成的标识符。如果要让关键字成为标识符,可以在前面加上@,如 string @int=“hello”;

    13.命名规则推荐使用camel(首字母小写)和Pascal(首字母大写)。

     三.类

    1.属性可以用来存储值{get;set;},可以通过给get和set设置public private等设置访问权限,也可以用来设置对字段的访问权限{get{return xx;} set{xx=tt;}}。

    2.方法的重载的要点是参数的类型或者数量不同。

    3.可以调用方法时,可以明确参数的意义如test.do(x:20, y:15, t:true);

    4.可以设置可选参数void test(int a,int b=2){...},因为b已经定义,因此test可以只传递一个参数 test(3);

    5.使用param可以定义参数的数量或者不同类型的参数,具体的,妹的,懒得写在第81页。

    6.静态构造函数:这个函数在程序启动后自动执行一次,不需要实例化,并不影响正常的构造函数的执行。这里主要用来做一些静态变量的初始化工作。例如如果静态变量backColor表示星期几的颜色,那么这里可以由静态构造函数自动设置,而省去了实例化后再由其他程序设置的过程。

     7.只读readonly关键字,去他妹的,真鸡肋的关键字,不想写。

     四.继承

    1.类不支持多重类继承,但支持多重接口继承;结构体只支持接口继承。

    2.属性也能定义成虚的。

    3.方法名前用new进行修饰的最大总用应该是用来进行解决版本冲突。

    4.seald修饰符,如果放在类名前修饰类,表示这个类不能被继承,放在方法前表示方法不能被重写。

    5.接口也可以继承一个接口。

    6.is用于判断当前实例是否可以强制转换成某一个类;as用于直接转换,如果结果不为空,即转换成功,结果为空,即转换失败。这样就避免了转换异常的出现。

  • 相关阅读:
    【POJ 1958】 Strange Towers of Hanoi
    【HNOI 2003】 激光炸弹
    【POJ 3263】 Tallest Cow
    【POJ 2689】 Prime Distance
    【POJ 2777】 Count Color
    【POJ 1995】 Raising Modulo Numbers
    【POJ 1845】 Sumdiv
    6月16日省中集训题解
    【TJOI 2018】数学计算
    【POJ 1275】 Cashier Employment
  • 原文地址:https://www.cnblogs.com/xiaoahui/p/10802710.html
Copyright © 2011-2022 走看看