1.0 基础、标示符、常量、数据类型(enum 枚举,struct 结构体)、操作符、循环、数组...
一、程序
- 现实生活中,程序是指完成某些事务的一种既定方法和过程,可以把程序看成是一系列动作执行过程的描述。
- 在计算机世界,程序是指令,即为了让计算机执行某些操作或解决某个问题而编写的一系列有序指令的集合
- 程序=数据结构(指程序中的特定数据类型和数据组织形式)+算法(算法是指为达到某个目的所要执行的操作步骤)
二、标示符
- 标识符用来表示程序中的一个特定元素,如类名、方法名、变量名、项目名等等
- 标识符可以是字母、数字、下划线及“@”,但是必须以字母、下划线及@开头,不能以数字开头
- 标识符严格区分大小写
- 可以使用中文做为标识符,但不建议使用
- 不能使用关键字做标识符
- 对于类名和方法名的标识符,一般将每个单词的首字母大写,如StudentInfo;字段及变量名首单词的首字母小写,其他单词首字母大写
三、常量
常量使用const关键字来定义,常量在声明时必须赋值,且以后不能再对其赋值 eg:const int a = 10;
四、数据类型
C#中的数据可以分为两大类:值类型(Value Type)和引用类型(Reference Type)。
值类型包括: 结构体(数值类型,bool型,用户定义的结构体),枚举,可空类型
引用类型包括: 数组,接口,委托,类(用户自定义类、String类、Object类)
值类型的对象,继承自System.ValueType类(此类的对象却是引用类型的),内容直接储存在栈上(以及MSDN中提到的“或在结构中以内联方式分配的”——“or allocated inline in a structure”);引用类型的对象,其内容存储于堆上,栈上的相应变量名下只存储该处的堆地址,长度为4字节/32位(32位操作系统)或者8字节/64位(64位操作系统)。
值类型的对象不能为null。不能从已有的值类型派生新的数据类型。
栈的特点:存放数据类型(值类型),其优点:比在堆上分配空间更快;用完之后立即自动释放;赋值方便(使用等号)
堆的特点:存放引用类型。
值类型的数据类型全部继承自System.ValueType类,它们又分为以下几类:
C#系统自定义了13种数值类型的数据类型:
整型 9种:byte, short, int(系统默认), long sbite, ushort, uint, ulong,char ----类型装换Convert 类
名称 |
值范围 |
系统名称 |
属于CLS |
占用内存长度 |
---|---|---|---|---|
byte |
0至28-1(128) |
System.Byte |
Yes |
1字节/8位 |
sbyte |
-27至27-1 |
System.SByte |
No |
1字节/8位 |
ushort |
0至216-1(65535) |
System.UInt16 |
No |
2字节/16位 |
short |
-215至215-1 |
System.Int16 |
Yes |
2字节/16位 |
char |
\0000至\ffff |
System.Char |
Yes |
2字节/16位 |
uint |
0至232-1(约4.29×109) |
System.UInt32 |
No |
4字节/32位 |
int |
-231至231-1 |
System.Int32 |
Yes |
4字节/32位 |
ulong |
0至264-1(约1.84×1019) |
System.UInt64 |
No |
8字节/64位 |
long |
-263至263-1 |
System.Int64 |
Yes |
8字节/64位 |
浮点型3种:float, double(系统默认), decimal
名称 |
值范围 |
系统名称 |
属于CLS |
精度 |
占用内存长度 |
实例 |
---|---|---|---|---|---|---|
float(单精度) |
±1.5×10-45至±3.4×1038 |
System.Single |
Yes |
7位 |
4字节/32位 |
float f = 3.14f |
double(双精度) |
±5.0×10-324至±1.7×10308 |
System.Double |
Yes |
15至16位 |
8字节/64位 |
double d = 2.14 |
decimal(高精度) |
±1.0×10-28至±7.9×1028 |
System.Decimal |
Yes |
28至29位 |
16字节/128位 |
decimal d = 2.13M |
布尔型(逻辑)1种:bool
可能的取值为true和false,占用内存长度1字节/8位。C#中不再有类似于“零等于flase,非零int值等于true”的变换。bool型的系统名称为System.Boolean,属于CLS.
其他2种:
enum 枚举
枚举的数据类型的声明:[属性(attributes)] [访问标识(modifiers)] enum 名称(identifier) [:基类型(base-type)] {枚举列表(enumerator-list)} [;]
枚举类型的本意有两点:一是将难以记忆的整型数常量(除char外的8种整型数都可以)标记为更好理解的变量名。二是引入强类型,在需要采用整形数常量表示的变量之间建立屏障。虽然每个字符串代表了一个整形数常量,但是具体使用枚举类数据类型的整型数常量时仍需要强制类型转换。这个整数值在C#默认是int型的。
枚举列表中各个变量的赋值默认是从0开始,递加1的。
例如:enum days:int {Sat, Sun, Mon}; 取值(int)days.Sun为1 或 enum days:int {Sat=1, Sun, Mon}; 取值(int)days.Sun为2
struct 结构体
用户自定义的值类型数据类型,和类相似也有不同(有篇博客具体介绍过);本身没有继承这一特点,因此与继承相关的一切(例如抽象方法)结构体均不具备,除了两点:所有的结构体继承自System.Object类、结构体可以继承(实现)接口。
类 | 结构体 | |
---|---|---|
类型 | 引用类型 | 值类型 |
实例化 | 必须通过new实例化 | 可以不new,直接声明,但声明后必须赋值 |
构造方法(函数) | 方法不受限制(有、无参数均可,默认是无参) | 方法必须带有参 |
继承 | 自身继承System.Object,可继承(包含接口),也可被继承 | 除自身继承System.ValueType外,不可继承(除接口,通常叫做实现接口),也不可被继承 |
成员 | 字段声明时可赋值(初始化) | 字段声明时不可赋值,方法一般公有 |
作参数传递给方法 | 传递的是引用(值一但修改所有指向改类值都已改变) | 传递的是实际值(值修改不会影响其它指向值,除非被ref修饰;ref修饰后传递引用) |
性能介绍:结构是值类型,所以会影响性能,但根据使用结构的方式,这种影响可能是正面的,也可能是负面的。正面的影响是为结构分配内存时,速度非常快,因为它们将内联或者保存在堆栈中。在结构超出了作用域被删除时,速度也很快。另一方面,只要把结构作为参数来传递或者把一个结构赋给另一个结构(例如A=B,其中A和B是结构),结构的所有内容就被复制,而对于类,则只复制引用。这样,就会有性能损失,根据结构的大小,性能损失也不同。注意,结构主要用于小的数据结构。但当把结构作为参数传递给方法时,就应把它作为ref参数传递,以避免性能损失——此时只传递了结构在内存中的地址,这样传递速度就与在类中的传递速度一样快了。另一方面,如果这样做,就必须注意被调用的方法可以改变结构的值。
五、操作符
分类:
赋值操作符: | = |
---|---|
复合赋值运算符: | +=,-=,*=,/=,%= |
算数运算符: | +,-,*,/,%(ß二元运算符),++,--(ß一元运算符) |
条件运算符: | >,<,>=,<=,!=,== |
逻辑运算符: | &&(遇假为假),||(同真为真),! |
位运算符: | &,|,^,~,<<,>> |
备注: |
几乎所有的操作符都只能操作基本数据类型,但是”=”,”==”和”!=”, 这些操作符能操作所有的对象。除此以外String类支持”+”和”+=”。 |
优先级:
postfix operators |
[] . (params) expr++ expr-- |
---|---|
unary operators | ++expr --expr +expr -expr ~ ! |
creation or cast |
new (type)expr |
multiplicative | * / % |
additive | + - |
shift |
<< >> >>> |
relational |
< > <= >= instanceof |
equality | == != |
bitwise AND | & |
bitwise exclusive OR |
^ |
bitwise inclusive OR |
| |
logical AND | && |
logical OR | || |
conditional |
? |
assignment | = += -= *= /= %= &= ^= |= <<= >>= >>>= |
备注 | 上面的操作数优先级从上到下依次降低,同一个单元格内的优先级相同 |
六、循环 注:[]表示可有可无
while (先判断后执行,)
用法:while(循环条件){循环体}
其它用法:while(变量名){ case 变量值1:[执行语句] break;······default:[执行语句] break;}
do-while (先执行一次再判断)
用法:do{循环体}while(循环条件);
for (和while类似,先判断)
用法:for([初始化循环变量];[循环条件];[修改循环变量值]){循环体}
foreach (遍历)
用法:foreach(类型 变量名 in 类型数据列表){}
扩展:continue(跳出本次循环进行下次循环)、break(跳出整个循环)、return(跳出整个方法,可有可无返回值)
七、数组
一维数组:类型[] 变量名 = new 类型[长度];
多维数组(矩形数组):类型[,] 变量名 = new 类型[外长度,内长度];--注:[]里的,等于几维减1
交错数组(数组的数组):类型[][] 变量名 = 类型[长度][];
转载于:https://www.cnblogs.com/wenmaoyu/p/3159801.html
1.0 基础、标示符、常量、数据类型(enum 枚举,struct 结构体)、操作符、循环、数组...相关推荐
- Golang 基础知识(十一.struct结构体)
struct结构体 1.定义 2.匿名结构体 3.键值对初始化 4.构造函数 4.1 (值)方法和接收者 4.2 (指针)方法和接受者 4.3 结构体的"继承 4.4 序列化与反序列化 4. ...
- 【零基础学C语言】知识总结八:struct 结构体与 union 共用体
struct 结构体 struct即结构体,C程序中经常需要用相关的不同类型的数据来描述一个数据对象.例如,描述学生的综合信息时,需要使用学生的学号.姓名.性别等不同类型的数据时,像这种数据类型总是在 ...
- struct结构体数据类型
前言 我们知道,在C语言中有一些基本的数据类型,如 char int float long double string(c99) 等等数据类型,他们可以表示一些事物的基本属性,但是当我们想表达一个事物 ...
- C#基础6:枚举与结构体
PS:注释和讲解全在代码中 1. 枚举与结构体 using System; using System.Collections.Generic; using System.Linq; using Sys ...
- Hive基础08、Hive引入Struct结构体
Hive基础08.Hive引入Struct结构体 1.建表语句 创建一个温良贤淑女子的表 英文关键字解析: 1.CREATE TABLE 创建一个指定名字的表,如果库中已有相同名的表,则抛出异常: 用 ...
- Swift 中枚举、结构体、类(enum、struct、class)
Swift 中枚举.结构体.类(enum.struct.class) Swift中的枚举与OC相比不会自动分配初始值,值的类型不会限定为整数,可以给定关联值类型和具体值(整型.浮点型.字符型(Swif ...
- 【MATLAB】数据类型 ( 元胞数组 | 单位阵 | 幻方 | 结构体 | 元胞数组值获取 )
文章目录 一.元胞数组 1.定义元胞数组 2.生成单位阵 3.生成幻方 4.元胞数组元素赋值 5.元胞数组元素赋值 二 二.元胞数组 1.定义结构体 2.小括号获取元胞数组子数组 3.大括号获取元胞数 ...
- c语言学习之基础知识点介绍(十二):结构体的介绍
一.结构体的介绍 /* 语法:struct 结构体名{成员列表;};切记切记有分号!说明:成员列表就是指你要保存哪些类型的数据.注意:上面的语法只是定义一个新的类型,而这个类型叫做结构体类型.因为类型 ...
- MySQL数据库(11):数据类型-enum 枚举类型
enum 枚举类型 例如: 性别 gender 男 女 保密 基本语法 enum(数据值 1,数据值 2...); 数据值列表在 255 个以内,使用 1 个字节来存储 数据值列表超过 255,但是小 ...
最新文章
- 2018-4-15摘录笔记,《网络表征学习前沿与实践》 崔鹏以及《网络表征学习中的基本问题初探》 王啸 崔鹏 朱文武
- Delphi编码及注释规范
- 浙江巨丰管业有限公司网站
- 附加数据库时出错。有关详细信息,请单击“消息”列中的超链接。
- linux发挥显卡性能,Linux Kernel 2.6.30下Intel显卡性能有大幅提升!
- 站覆盖范围_武汉高铁站落地灯箱广告有什么投放价值?
- 响应程度怎么填写_如何增加直邮营销的响应率?
- mcc mnc 运营商对应表_在南非怎么选手机的移动电话运营商?
- 【渝粤教育】国家开放大学2018年春季 0557-22T广告设计 参考试题
- fopen()和fgetl()打开问件,读取内容
- 怎样在计算机上安装计算器,如何在win10系统电脑上重新安装计算器
- mpa和pis_有关压力单位pis、bar与Mpa换算
- 《信息检索》课程笔记
- 解决win2019安装.net3.5的问题,亲测可行(未成功启用报错,找不到源文件报错,统统解决。。)
- 黎想首谈微信公众号搜索排名的规则?怎样提高排名?
- 用Python一步读写csv、xlsx表格
- jquery弹幕效果
- 不用任何框架,Java 就能实现定时任务的 3 种方法
- 刘云浩博士报告_年青人 追梦的感觉
- 阿里云ACP考试如何顺利通过,如何备考?