C# 从零开始 vol.1

说好的java只能先坑了,毕竟计划赶不上变化,以下是 c# 基础部分。

1:变量,方法的命名方式

  目的就是一眼看到实例名 方法名 就知道该变量是做什么的。

  主流的命名方式有驼峰命名规则,pascal命名规则,以及匈牙利命名规则。

先看案例 :

  var NewCamel = new Camel(); //pascal命名规则

  var  newCamel = new Camel();//驼峰命名规则

  var CnewCamel = new Camel();//匈牙利命名规则

  其中区别就是  pascal 命名需要每个单词首字母大写,而驼峰命名则是 第一个单词首字母小写,之后的单词首字母大写。

  匈牙利命名规则比较特殊,首字母表示了实例的类型。

  通常c#的命名规则使用 驼峰命名规则,但是接口则使用了匈牙利命名规则(接口的命名通常以 I 作为开头)。

  字段 则开头使用下划线 。

2:进程

  一个应用程序 拥有一个进程,一个进程是由多个线程组成的,进程在内存中分配程序执行所需要的空间,可以操作进程来操作应用程序。

3:面向对象

  面向对象主要的优势:封装,继承,多态。

  封装:封装复杂性,一段代码到处复制是肯定不可以的,工具等方法 一般都是封装成 静态类,会操作共有资源的需要加锁。

  继承:一个功能可能有许多实现方式,比如从本地硬盘读取一首歌,从网络读取一首歌等,这样就可以创建一个接口,这个接口有一个Read(); 方法,读取本地硬盘的方法实现这个接口,读取网络的方法也实现这个接口,这样就能在需要的时候根据不同的方法来调用这个接口,创建实例,同时AOP 能让这项优势扩大(动态代理,持久化实例等)。

    特性:

      单根性:只能继承一个类。

      传递性:父类也可以继承其他类。

      里氏转换:子类赋值给父类,(协变和逆变)如果父类引用的是子类对象,则可以将这个父类转换成对应的子类。

      is 和 as 关键字:

is  的用法:

var int32 = new Int32(100);
if(int32 is Int32){
//do something
}else{
//do else something
}

as 的用法:

var asResult = int32 as Int32;
if(asResult!=null){
//do something
}else{
//do else something
}

  多态:

    虚方法:用 关键字 virtual 装饰方法名,表示可以重写,子类中 使用override 重写标记了 virtual 的方法。

    抽象类:abstract 类 中可以包含非抽象的方法,但非抽象类不能包含抽象方法。

4:new this base:

  new 创建对象:

    在堆中开辟空间。

    在开辟的空间中创建对象。

    调用对象的构造函数。

  this :

    代表当前对象(构造函数)。

    

  base :代表父类对象(构造函数)。

5:访问修饰符:

  public :任何地方都能访问。

  private:只能在当前类的内部访问。

  internal :只能在当前程序集中访问。

  protected:只能在当前类和该类的子类中访问。

    其中public internal 可以修饰类,其他只能修饰变量。

    类的默认修饰符是 internal。

    子类的访问权限不能高于父类(只能相等或小于)。

时间: 2024-12-25 18:41:46

C# 从零开始 vol.1的相关文章

C# 从零开始 vol.2

这是第二篇 1:命名空间 命名空间可以理解成类的文件夹,这个命名空间中存放着各种类,当你需要使用到对应的类的时候,就需要导入命名空间后才能使用. 引用:可以理解成添加新的存放类的文件夹,也就是一个项目下有多个引用,一个引用下有多个类. 题外话:c# 添加引用 对应 java 的应该是 导入jar包,当然实际操作起来应该是不一样的,不过说实话c#的引用比java的导jar 包不知道高到哪里去了,毕竟宇宙第一IDE. 2:静态类和非静态类 静态对象 被static 修饰. 静态对象先在程序初始化时被

iOS block从零开始

iOS block从零开始 在iOS4.0之后,block横空出世,它本身封装了一段代码并将这段代码当做变量,通过block()的方式进行回调. block的结构 先来一段简单的代码看看: void (^myBlock)(int a) = ^(int a){ NSLog(@"%zd",a); }; NSLog(@"旭宝爱吃鱼"); myBlock(999); 输出结果: 2016-05-03 11:27:18.571 block[5340:706252] 旭宝爱吃鱼

从零开始学android<android事件的处理方式.二十四.>

在android中一共有 多种事件,每种事件都有自己相对应的处理机制 如以下几种 1 单击事件 View.OnClickListener public abstract void onClick (View v) 单击组件时触发 2 单击事件 View.OnLongClickListener public abstract boolean onLongClick (View v) 长按组件时触发 3 键盘事件 View.OnKeyListener public abstract boolean

从零开始编写自己的C#框架(9)——数据库设计与创建

对于千万级与百万级数据库设计是有所区别的,由于本项目是基于中小型软件开发框架来设计,记录量相对会比较少,所以数据库设计时考虑的角度是:与开发相结合:空间换性能:空间换开发效率:减少null异常......当然不同的公司与项目要求不同,初学者要学会适应不同的项目开发要求,使用本框架开发时,必须严格按照本章节的要求来设计数据库,不然可能会产生不可控的异常. 从零开始编写自己的C#框架 数据库设计规范   文件状态: [√] 草稿 [  ] 正式发布 [  ] 正在修改 文件标识: C#框架 当前版本

Linux运维--从零开始

闲来无事,想写点东西.一来作为分享,二来也作为记录方便日后查看. 我会把我所学到的有关Linux运维的所有知识,进行分享. 博主性格比较随性,不能保证多久更新,也许一天一篇,也许一周,目标是一周3篇. 不敢保证所有东西都是对的,也希望更多的大牛指导交流. 既然从零开始,那就简单说下什么是Linux? Linux是一个操作系统,和你现在使用的Windows或MacOS一样,是一个人与机器沟通的一个"桥梁". Linux有很多发行版,常见的有Ubuntu.Debian.RHEL.Cento

从零开始:微信小程序新手入门宝典

为了方便大家了解并入门微信小程序,特将可能会需要的知识,列在这里,让大家方便的从零开始学习 一:微信小程序的特点 张小龙:张小龙全面阐述小程序,推荐通读此文: 小程序是一种不需要下载.安装即可使用的应用,它出现了触手可及的梦想,用户扫一扫或者搜一下即开打开应用,也出现了用完即走的理念,用户不用关心安装太多应用的问题,应用随处可用,但又无须安装卸载.我当时是这样来定义什么是小程序的. 1:无需下载:我们直接使用它,所以无须安装是小程序最基础的一个特性: 2:触手可及:当我们拿着智能手机接触周边的时

IC卡解密从零开始学1 (也许会有2) 解密工具V2 V3大放送 By:lookyour

前段时间发了一个破解的PN532工具,详见 ===========================IC卡解密工具 PN532工具XP 爆破版http://www.52pojie.cn/thread-597896-1-1.html IC卡解密从零开始学2  解密工具PN532-mfoc-mfcuk-GUIhttp://www.52pojie.cn/thread-604402-1-1.html =========================有很多人私信和回复希望有个详细点的介绍... 好吧,本着

SD从零开始41-44

[原创] SD从零开始41 科目确定(Account determination) 使用科目确定Using Account Determination 你将需要在几个不同的领域确定将要记账的科目: 用于记账销售收入,销售扣除和增值税的总账科目在数据从billing document传输到FI时自动地确定: 当处理现金销售时,必须在凭证中设置一个总账科目用于现金结算(不会记账到客户账户): 到4.0版本时,可以确定一个不同于付款方客户主数据中输入的科目的统御科目: 当使用payment cards

SD从零开始38-40

[原创]SD从零开始38 创建Billing Document 根据需要BillingBilling On Request 你可以通过手工输入凭证的号码(订单号码和Delivery note,依赖于你想要执行订单相关的还是交货相关的Billing)明确地指定哪些交易将要Billing: 如果Billing无法产生,例如因为一个billing block,系统会发行一个错误日志: 到4.5版本,在为deliveries或ordersBilling时你还可以选择单个的items或者items的部分数