c#的编译与运行:
1、标识符
用以命名变量、参数、方法等,命名规则:由字母、数字、下划线组成(@),首位可以是字母或下划线(@)
2、关键字
c#关键字全部小写,例如:abstract、const、char、byte、int、short、long、float、double、bool、string、true、false、new、if、else、for、try、catch、void、class、public、private、basic、as、continue、break...
3、格式化数字字符串
格式说明符:{索引号,(对齐说明符):(格式字段)}
索引号数值由0开始,不得超过替换项的索引
对齐说明符:指定字段宽肃,左对齐或右对齐;由正整数或负整数组成,正整数代表表示右对齐,负整数表示左对齐
例:Console.WriteLine(“|{0,10|}”,500);
输出:| 500|
当字符数<对齐说明符指定数,以空格补齐,当字符数>对齐说明符指定数,对齐说明符失效。
格式字段:指定数字以哪种格式表示,例如货币、进制、小数定点保留位数、科学计数法、百分比等
例:Console.WriteLine(“The value is {0:C}”,200);
输出: The value is $200
名字和字符 | 意义 |
货币 C/c | 将值转化为货币,符号取决于pc位置 精度说明符:小数位数 |
十进制数 D/d | 精度说明符:输出最少位数,不足左边以0填充 例如:"{0:D4}",12 输出: 0012 |
定点 F/f | 精度说明符:小数位数 |
十六进制数 X/x | 十六进制中的A-F的大小写取决于X的大小写 精度说明符:输出最少位数,不足左边以0填充 例如:"{0:x}",345678 输出: 2bf3a |
数字 N/n | 整数部分没三位一个逗号隔开 精度说明符:小数位数 例如:“{0:N2}”,12345678.54321 输出:12,345,678.54 |
百分比 P/p | 以百分数表是数值 精度说明符:小数位数 |
往返过程 R/r | parse方法时,保证数值 |
科学记数法 E/e | 具有指数和尾数的科学记数法,E的大小写随E 精度说明符:小数的位数 例如:“{0::e4}”,12.3456789 输出:1.2346e+001 |
4、注释
单行注释: //
多行注释:/* */
文档注释:///
5、类型
引用《c#图解教程》,c#程序或者dll源程序是一组类型声明;对于可执行程序,类型声明中必须有一个包含main方法的类;命名空间是一种将相关的类型声明分组并命名的方法,通常在创建的命名空间内部声明程序类型。
简单类型:short、int、long等等,智能存储一个数据项;
数组类型可以存储多个同类型的数据项,称数组元素;
包含不同类型数据项的类型,数据项称成员,有数据成员,有函数成员。
c#提供的16中预定义类型:
11种数值型:sbyte、byte、short、ushort、int、uint、long、ulong有无符号整数型,float、double浮点数类型,decimal高精度小数类型;
1种Unicode字符型:char;
1种布尔类型:bool,只有true、false两个值;
ps:在c#中数值类型不具有布尔意义
3种非简单类型:Unicode字符数组:string,基类:object,使用动态语言编写的程序集时使用:dynamic。
用户定义类型:
类class、结构struct、数组array、枚举eum、委托delegate、接口interface。
6、存储
栈:后进先出的数据结构,栈存储的数据:某些类型变量的值、程序当前的环境、传递给方法的参数,只能从栈顶存入与删除。
堆:可以以任意顺序存入与删除,可以分配大块的内存用于存储某种类的对象。
7、值类型和引用类型
非成员数据的值类型数据存在栈中,引用类型数据存在堆里,引用存在栈中。
值类型 | 引用类型 | |
预定义来类型 | sbyte、byte、short、ushort、int、uint、long、ulong、bool | char、string、float、double、decimal、dynamic、object |
用户定义类型 | struct、enum | class、interface、array、delegate |
8、变量声明与初始化
例:int a = 10;
多变量声明
例:int a =10,b=20;
9、类
程序的数据和功能被组织为逻辑上相关的数据项和函数的封装集合
数据成员:数据成员通常模拟该类所表示的现实世界事物的特性,比如在student类中,可以有语文成绩、数学成绩、英语成绩;或者在people类中,可以有身高、体重等等
函数成员:执行代码,通常会模拟类所表示的现实世界事物的功能和操作,比如student类中,可以有上课发言,打球、考试;或者在people类中,可以有吃、喝。拉、撒、睡等
数据成员存储数据 | 函数成员执行代码 |
字段 常量 | 方法 运算符 属性 索引器 构造函数 事件 析构函数 |
声明类
class 类名
{
成员声明
}
字段和方法时类最重要的类成员类型
字段:
字段是隶属于类的变量,可以是预定义类型或是用户定义类型;
ps:c#在类型外部不能声明全局变量,所有的字段都属于类型,而且必须在类型声明内部声明;
如果没有初始化字段,编译器会将字段设置成默认值,值类型默认值为0,布尔类型为false,引用类型为null。
方法:
方法是具有名称的可执行代码块,可以从程序的很多不同地方执行,甚至从其他程序中执行。(函数)
声明方法的最简语法:
返回值类型 方法名称(参数列表)
{
方法体
}
ps:c#中没有全局函数声明在类型声明的外部,且方法没有默认的返回类型。没有也得写void
创建类的实例:
Dealer theDealer; 声明引用变量
theDealer = new Dealer(); 为类对象分配内存并赋值给变量
访问修饰符: 是用来修饰成员的可选部分,指明程序如何访问成员
private私有的、public公有地、internal内部的、protected受保护的、protected internal受保护内部的
私有成员只能从声明类中访问,为默认访问级别;实例的公有成员可以被程序中其他对象访问。
从类的内部访问成员很容易理解,从类外部访问成员必须包括变量名称和成员名称,例如:
DaysTemp myDt = new DaysTemp(); //创建类的对象
float fValue = myDt.Average(); //外部访问 (公有的成员才能被访问)
class DaysTemp
{
public int High,Low;
public int Average()
{
return (High + Low) / 2;
}
}
class Program
{
//创建两个DaysTemp实例
DaysTemp t1 = new DaysTemp();
DaysTemp t2 = new DaysTemp();
//给字段赋值
t1.High = 76; t1.Low = 57;
t2.High = 75; t1.Low = 53;
//读取字段值,调用实例的方法
Console.WriteLinw("t1:{0},{1},{2}",t1.High,t1.Low,t1.Average());
Console.WriteLinw("t2:{0},{1},{2}",t2.High,t2.Low,t2.Average());
}