C#中有两种数据类型
值类型:在栈中分配空间,由系统自动分配。
引用类型:在堆中分配空间,由程序员用“new”来分配空间
值类型存储在内存栈中,引用类型数据存储在内存堆中,而内存单元中存放的是堆中存放的地址。
值类型存取快,引用类型存取慢。
值类型表示实际数据,引用类型表示指向存储在内存堆中的数据的指针和引用。
栈的内存是自动释放的,堆内存是.NET中会由GC来自动释放。
值类型继承自System.ValueType,引用类型继承自System.Object。
常见类型分类
- 值类型
- 枚举类型
- 结构类型
- 自定义结构类型
- bool类型
- 数值类型
- decimal
- 浮点型
- float,double
- 整数类型
- sbyte,byte,int,uint,char,short,ushort,long,ulong
- 引用类型
- object,string,类,数组,委托,接口
- 指针类型
1字节
bool, byte, sbyte 8位=8bits
2字节
short ,ushort, char 16位=16bits
4字节
int, uint, float 32位
8字节
long, ulong, double 64位
16字节
decimal 123位
类型转换
隐式转换
隐式转换:C# 默认的以安全方式进行的转换。本质是从小存储容量数据类型自动转换为大存储容量数据类型,例如,从小的整数类型转换为大的整数类型,从派生类转换为基类。转换所需要的条件: 1.数据要兼容,都是值类型; 2.从取值范围小的往大的转;
强制类型转换
显式类型转换 - 显式类型转换,即强制类型转换。显式转换需要强制转换运算符。转换类型的范围大小和从属关系和隐式转换相反。显式转换会导致精确度会丢失,可能会导致数据出错,数据丢失或者转换失败,甚至无法编译成功。- 使用(类型名)变量名进行强行转换
double speed=10.4f;
float minspeed=(float)speed;
- 使用Parse转换
string name="123";
int n=int.Parse(name);
- 使用convert进行强制转换
string name="123";
int m=Convert.ToInt16(num);
变量
变量:在程序运行中可以改变的量.
变量代表一个存储区域。
存储区域内存储的内容就是变量的值.
变量命名规则
只能由数字、字母、下划线或@组成,并且数字不能开 头,@只能用在开头。
不可以与系统保留字同名。
不能使用重复的变量名(C#大小写敏感)。
见名知意(规范)
骆驼命名法,第一个单词小写,后面单词的首字母大写