[学习笔记]

一、简介

1、C#是由Anders Hejlsberg和他的团队在.Net框架开发期间开发的;是.Net框架的一部分。

  C#是专为公共语言基础结构(CLI)设计的,CLI由可执行代码和运行时环境组成,允许在不同计算机平台和体系结构上使用各种高级语言。

2、C#是大小写敏感的,每条语句都以 ; 结尾。程序执行从main开始,与Java不同的是,文件名可以不同于类名称;一个文件里可以有多个class;

3、Console.Write()               打印,一次同时打印多个参数可用占位符{0}...类似于format,后边用逗号隔开依次要输入各位的参数;

4、Console.ReadLine()   输入;

5、Console.ReadKey()    等待按键;

6、// 或者 /*...*/              注释

7、hello world

 //hello world !
using System; //使用系统命名空间
namespace HelloWorldApplication //声明命名空间
{
class HelloWorld //class声明
{
static void Main(string[] args) /* main 方法 */
{
/* 我的第一个 C# 程序*/
Console.WriteLine("Hello World");
Console.ReadKey();
}
}
}

二、基础

1、数据类型

 bool          布尔值
byte 8位无符号整数(0到255)
char 16位Unicod字符
decimal   128位精确的十进制值,-29位有效数
double    64位双精度浮点型
float 32位单精度浮点型
int    32位有符号整型
long 64位有符号整型
sbyte 8位有符号整型
short 16位有符号整型
uint 32位无符号整型
ulong 64位无符号整型
ushort    16位无符号整型

可用sizeof(type)方法来获取一个变量在特定平台上的准确尺寸;

string                  字符串可用引号和@引导,用@引导时称作“逐字字符串”,此时转义字符会被当作普通字符处理,且可进行任意的换行和缩进处理;多个字符串可用+号连接

type* name         指针类型

dynamic              动态类型

const                  常量

nullable              可空类型(声明:<data_type> ? <variable_name> = null;合并运算符 ?? 用于定义可空类型和引用类型默认值,如果不为空则为??前边的值,如果给定值为空,则用??后边的默认值)

2、数据类型转换

显示类型转换(强制转换)

double d = 1.23;
int x;
i = (int)d;

3、内置类型转换方法

 ToBooolean    如果可能的话,把类型转换为布尔型
ToByte 把类型转换为字节类型
ToChar 如果可能的话,把类型转换为单个Unicode字符类型
ToDateTime 把类型转换为时间结构
ToDecimal 把浮点型或整数类型转换为十进制类型
ToDouble    把类型转换为双精度浮点型
ToInt16 把类型转换为16位整数类型
ToInt32 把类型转换为32位整数类型
ToInt64 把类型转换为64位整数类型
ToSbyte 把类型转换为有符号字节类型;
ToSingle 把类型转换为有符号字节类型
ToString 把类型转换为字符串类型
ToType 把类型转换为指定类型
ToUInt16 把类型转换为16位无符号整数类型
ToUInt32 把类型转换为32位无符号整数类型
ToUInt64 把类型转换为64位无符号整数类型

示例:

int i = ;
i.ToSingle(); string locstr = .ToString();
//如果要将"locstr"转成整型数
//方法一: 用 Convert
int i = Convert.ToInt16(locstr);
//方法二: 用 Parse
int ii = int.Parse(locstr);

4、数据装箱与拆箱

装箱(值类型转换为对象类型)

int x = ;
object ob = x;

拆箱(之前由值类型转换而来的对象类型再转回值类型)

int x = ;
object ob = x;
int y = (int)ob

5、运算符

算术运算符:+,-,*,/,%,++,--

关系运算符:==,!=,>,<,>=,<=

逻辑运算符:&&,||,!

位运算符:&,|,^,~,<<,>>

赋值运算符:=,+=,-=,*=,/=,%=,<<=,>>=,^=,|=

其他运算符:

sizeof()    返回数据类型的大小

typeof()   返回class类型

&                  返回变量的地址

*                    变量的指针

?:                   条件表达式

is                   判断对象是否为某一类型

as                  强制转换,即使失败也不会抛出异常

6、数组(Array)

声明: datatype[] arrayName;

初始化: double[] a = new double[10],可使用foreach来遍历数组:foreach (double i in a)

C#支持多维数组;在定义一个新数组时[ ]也可以不给定个数。

7、结构(struct)

struct name
{
Access_Specifier type name
}

C#中结构与C或C++相比有以下特点:

1)结构可带有方法、字段、索引、属性、运算符方法和事件;

2)结构可定义构造函数,但不能定义析构函数;但也不能定义默认的构造函数;

3)与类不同,结构不能继承其他结构或类的基础结构;

4)结构可实现一个或多个接口;

5)结构成员不能指定为abstract、virturl或protected;

6)当使用New操作符创建一个结构对象时,会调用适当的构造函数来创建结构;但结构可不使用New操作符即可被实例化;

7)如果不使用New操作符,只有在所有的字段都被初始化之后,字段才被赋值,对象才被使得;

8、枚举(Enum)

enum <enum_name>
{
enumeration list
}

默认枚举的第一个符号的值是0,但也可以自己指定每个符号的值。

三、控制结构

1、if...else语句

if...else
if(boolean_expression){
}
else if{
}
else{
}

2、switch语句

switch(expression){
case const-expression:
statement(a);
break;
case const-expression:
statement(b);
break;
default:
statement(c);
break;
}

3、while循环

while(condition){
statement;
}

4、do...while循环

do{
statement;
}while(condition);

5、for循环

for(init;condition;increment){
conditional code;
}

6、函数

<Access Specifier> <Return Type> <Method Name>(Parameter List)
{
Method Body;
}

 

四、面向对象编程(Class)

1、C#的封装

public            所有对象都可以访问;

private           对象本身在对象内部可以访问;

protected       只有该类对象及其子类对象可以访问;

internal          同一个程序集的对象可以访问;

protected internal 一个程序集内的对象,或者该类对象及其子类可以访问;

2、类的定义

<access specifier> class class_name
{
<access specifier> <data_type> variable_name1;
<access specifier> <data_type> variable_name2;
...
<access specifier> <return_type> method1(parameter_list){
body;
}
<access specifier> <return_type> method1(parameter_list){
body;
}
...
}

3、构造函数

类的一个特殊成员函数,当创建类的新对象时执行;构造函数名称与类名称完全相同,但它没有任何返回类型。

默认的构造函数没有任何参数,但也可以有参数,这种方法可以帮助在创建对象同时给对象赋初始值。

4、析构函数:

类的一个特殊成员函数,当类的对象超出范围时执行;

析构函数的名称是在类的名称前加上一个 ~ 作为前缀,它不返回值,也不带参数;

析构函数用于在结束程序之前释放资源。析构函数不能继承或重载;

5、类的继承:

class <derived_class> : <base_class>{

}

对于构造函数的继承需要在参数后加 : baseMethod(parameter_list)

对于声明为sealed类为密封类,密封类不能被继承。

C#不支持多重继承,但可以通过接口来实现。

6、函数重载

在同一个范围内对相同的函数名有多个定义,但函数的定义必须彼此不同,可以是参数类型不同,也可以是个数不同,但不能只有返回类型不同。

7、动态多态性(抽象类和虚方法)

使用abstract关键字创建抽象类,用于提供接口的部分类的实现。当一个派生类继承自该抽象类时,实现即完成;抽象类包含抽象方法,抽象方法可被派生实现;

继承一个抽象方法时用override声明;

不能创建一个抽象类的实例;

不能在一个抽象类外部声明一个抽象方法;

抽象类不能被声明为sealed。

虚方法用virtual声明,在不同的继承类中有不同的实现,对虚方法的调用是在运行时发生的。

8、运算符的重载

在类中对运算符的重新定义,通过关键字operator+运算符 来定义的;

只有算术运算符和比较运算符可以被重载。

9、接口(interface)

接口定义了所有类继承接口时应遵循的语法合同,定义了属性、方法和事件;接口使得实现接口的类或结构在形式上保持一致。

接口使用interface声明,后边接接口名称即可。

接口的继承和类一样,类继承接口时必须先在static void main()中实例一个当前的类,然后调用接口的方法,再实现接口的方法。

附:

1、命名空间(namespace)

用于提供一种让一组名称与其他名称分隔开的方式。在同一程序内使用多个命名空间,在调用其他的类或方法时需用命名空间名后跟 . 进行定位区分。

也可以使用using来提前命名空间。(using还可以用于给很长的路径起别名)

命名空间可以进行嵌套。

2、预处理器指令:

 #define        定义一系列成为符号的字符;
#undef 取消定义符号;
#if 测试符号是否为真;
#else 与#if一起使用;
#elif 与#if一起使用;
#endif 指定一个条件指令的结束;
#line 修改编译器的行数及输出错误和警告的文件名;
#error 允许代码的指定位置生成一个错误;
#warning 允许代码的指定位置生成一级警告;
#region 指定一个可展开或折叠的代码块;
#endregion 与#region一起用,表示结束。

补充提高内容:https://www.cnblogs.com/aland-1415/p/9347915.html

C#快速入门的更多相关文章

  1. Web Api 入门实战 (快速入门+工具使用+不依赖IIS)

    平台之大势何人能挡? 带着你的Net飞奔吧!:http://www.cnblogs.com/dunitian/p/4822808.html 屁话我也就不多说了,什么简介的也省了,直接简单概括+demo ...

  2. SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=》提升)

     SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=>提升,5个Demo贯彻全篇,感兴趣的玩才是真的学) 官方demo:http://www.asp.net/si ...

  3. 前端开发小白必学技能—非关系数据库又像关系数据库的MongoDB快速入门命令(2)

    今天给大家道个歉,没有及时更新MongoDB快速入门的下篇,最近有点小忙,在此向博友们致歉.下面我将简单地说一下mongdb的一些基本命令以及我们日常开发过程中的一些问题.mongodb可以为我们提供 ...

  4. 【第三篇】ASP.NET MVC快速入门之安全策略(MVC5+EF6)

    目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...

  5. 【番外篇】ASP.NET MVC快速入门之免费jQuery控件库(MVC5+EF6)

    目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...

  6. Mybatis框架 的快速入门

    MyBatis 简介 什么是 MyBatis? MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架.MyBatis 消除 了几乎所有的 JDBC 代码和参数的手工设置以及结果 ...

  7. grunt快速入门

    快速入门 Grunt和 Grunt 插件是通过 npm 安装并管理的,npm是 Node.js 的包管理器. Grunt 0.4.x 必须配合Node.js >= 0.8.0版本使用.:奇数版本 ...

  8. 【第一篇】ASP.NET MVC快速入门之数据库操作(MVC5+EF6)

    目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...

  9. 【第四篇】ASP.NET MVC快速入门之完整示例(MVC5+EF6)

    目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...

  10. Vue.js 快速入门

    什么是Vue.js vue是法语中视图的意思,Vue.js是一个轻巧.高性能.可组件化的MVVM库,同时拥有非常容易上手的API.作者是尤雨溪,写下这篇文章时vue.js版本为1.0.7 准备 我推荐 ...

随机推荐

  1. [leetcode-508-Most Frequent Subtree Sum]

    Given the root of a tree, you are asked to find the most frequent subtree sum. The subtree sum of a ...

  2. Bootstrap下拉菜单

    前面的话 网页交互的时候经常会需要上下文菜单或者隐藏/显示菜单项,Bootstrap默认提供了用于显示链接列表的可切换.有上下文的菜单.而且在各种交互状态下的菜单展示需要和javascript插件配合 ...

  3. Android各种Manager

    一.PowerManager 主要是用来控制电源状态,设置屏幕状态,和电池待机状态 PowerManager  pm = ((PowerManager)getSystemService(POWER_S ...

  4. awvs 中文手册详细版

    目录: 0×00.什么是Acunetix Web Vulnarability Scanner ( What is AWVS?) 0×01.AWVS安装过程.主要文件介绍.界面简介.主要操作区域简介(I ...

  5. centos 7 yum方式安装MySQL 5.6

    本文根据mysql的官方文档操作:https://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/ 由于Centos7 默认数据库是mariabd(网上 ...

  6. 【No JSON object could be decoded】问题解决

    本人使用爬虫从某数据库中下载了一批数据,本地存为json格式(pgp.json)然后使用python中的json模块进行解析(json.load),一直出现下述错误 从google中查找到了同样错误的 ...

  7. tp框架---验证码详解

    很多注册登录界面都会验证码,用tp如何实现验证码的功能呢? 在tp中:Think\Verify类可以支持验证码的生成和验证功能. 首先,看一下逻辑: (1)如何生成?------ 先做Yanzheng ...

  8. C#将datatable的某一列转换成json格式的字符串

    将datatable的某一列转换成json格式的字符串(转换完后自己在字符串前后加{}) /// <summary> ///DataTable装换 Column数据 组合成json 现在的 ...

  9. Python爬虫番外篇之Cookie和Session

    关于cookie和session估计很多程序员面试的时候都会被问到,这两个概念在写web以及爬虫中都会涉及,并且两者可能很多人直接回答也不好说的特别清楚,所以整理这样一篇文章,也帮助自己加深理解 什么 ...

  10. python基础(7):元祖类型(赋值补充)

    前面学了列表和字典,今天我们看一个和列表相似的类型元祖. 预习: 简单购物车 实现打印商品详细信息,用户输入商品名和购买个数,则将商品名,价格,购买个数加入购物列表,如果输入为空或其他非法输入则要求用 ...