一.基础

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:\a\d.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用于直接转换,如果结果不为空,即转换成功,结果为空,即转换失败。这样就避免了转换异常的出现。

C#学习笔记一(概念,对象与类型,继承)的更多相关文章

  1. Java IO学习笔记:概念与原理

    Java IO学习笔记:概念与原理   一.概念   Java中对文件的操作是以流的方式进行的.流是Java内存中的一组有序数据序列.Java将数据从源(文件.内存.键盘.网络)读入到内存 中,形成了 ...

  2. Oracle RAC学习笔记:基本概念及入门

    Oracle RAC学习笔记:基本概念及入门 2010年04月19日 10:39 来源:书童的博客 作者:书童 编辑:晓熊 [技术开发 技术文章]    oracle 10g real applica ...

  3. jQuery学习笔记之概念(1)

    jQuery学习笔记之概念(1) ----------------------学习目录-------------------- 1.概念 2.特点 3.选择器 4.DOM操作 5.事件 6.jQuer ...

  4. JavaScript:学习笔记(9)——Promise对象

    JavaScript:学习笔记(9)——Promise对象 引入Promise Primose是异步编程的一种解决方案,比传统的解决方案回调函数和事件更加合理和强大.如下面为基于回调函数的Ajax操作 ...

  5. 《python基础教程(第二版)》学习笔记 类和对象(第7章)

    <python基础教程(第二版)>学习笔记 类和对象(第7章) 定义类class Person:    def setName(self,name):        self.name=n ...

  6. JavaScript:学习笔记(10)——XMLHttpRequest对象

    JavaScript:学习笔记(10)——XMLHttpRequest对象 XHR对象 使用XMLHttpRequest (XHR)对象可以与服务器交互.您可以从URL获取数据,而无需让整个的页面刷新 ...

  7. OpenGL学习笔记3——缓冲区对象

    在GL中特别提出了缓冲区对象这一概念,是针对提高绘图效率的一个手段.由于GL的架构是基于客户——服务器模型建立的,因此默认所有的绘图数据均是存储在本地客户端,通过GL内核渲染处理以后再将数据发往GPU ...

  8. AngularJs学习笔记--concepts(概念)

    原版地址:http://code.angularjs.org/1.0.2/docs/guide/concepts 继续.. 一.总括 本文主要是angular组件(components)的概览,并说明 ...

  9. [Golang学习笔记] 06 程序实体3 类型断言和类型转换

    类型断言: 语法:<目标类型的值>,<布尔参数> := <表达式>.( 目标类型 ) // 安全类型断言<目标类型的值> := <表达式>. ...

  10. [C#] 类型学习笔记三:自定义值类型

    既前两篇之后,这一篇我们讨论通过struct 关键字自定义值类型. 在第一篇已经讨论过值类型的优势,节省空间,不会触发Gargage Collection等等. 在对性能要求比较高的场景下,通过str ...

随机推荐

  1. [易学易懂系列|rustlang语言|零基础|快速入门|(21)|智能指针]

    [易学易懂系列|rustlang语言|零基础|快速入门|(21)|智能指针] 实用知识 智能指针 我们今天来讲讲Rust中的智能指针. 什么是指针? 在Rust,指针(普通指针),就是保存内存地址的值 ...

  2. 什么是Redis缓存穿透、缓存雪崩和缓存击穿

    https://baijiahao.baidu.com/s?id=1619572269435584821&wfr=spider&for=pc 缓存穿透 缓存穿透,是指查询一个数据库一定 ...

  3. VS插件CodeRush for Visual Studio全新发布v19.1.7|附下载

    CodeRush是一个强大的Visual Studio® .NET 插件,它利用整合技术,通过促进开发者和团队效率来提升开发者体验. CodeRush能帮助你以极高的效率创建和维护源代码.Consum ...

  4. Vue打包上线之后CSS没有压缩和不生效

    前言 当用vue-cli 脚手架 打包压缩时,发现打包出来的css 没有被压缩, 所以查阅了些资料,下面用这个方法解决: 1.首先注释掉webpack.prod.conf.js中下面的代码 new O ...

  5. Puppetnginx 架构图

    Puppetnginx 架构图 优点 *性能:nginx因为精简,运行起来非常快速,许多人声称它的比pound更高效.*日志,调试:在这两个方面,nginx比pound更简洁.*灵活性:nginx的处 ...

  6. PHP preg_match正则表达式

    行定位符 ^表示开始 $表示结束 preg_match(模式,待搜索的字符串,$matches) 其中matches为可选参数,一旦匹配上,可以返回匹配结果 举个例子: $pattern = '/#\ ...

  7. wx小程序知识点(三)

    三.封装小程序的数据请求 (1)在根目录创建utils目录,创建config.js.base.js (2)在config.js中创建config类,并将请求路径配置给config的属性restUrl, ...

  8. 23. ClustrixDB AUTO_UNIQUE

    AUTO_INCREMENT 许多表具有使用AUTO_INCREMENT自动填充的代理键.ClustrixDB也支持这个MySQL特性,并在将记录插入表时创建惟一的ID.这些生成的id单调递增. 惟一 ...

  9. cogs2039树的统计 x

    2039. 树的统计 ★★   输入文件:counttree.in   输出文件:counttree.out   简单对比 时间限制:1 s   内存限制:128 MB [题目描述] 关于树的统计问题 ...

  10. fiddler(二)、配置抓取https协议

    打开fiddler,用火狐或者谷歌浏览器访问https协议的网页,如:https://www.baidu.com/,会报不安全的连接错误 这时就需要我们做一些配置,才能抓取https协议的网页. 首先 ...