类型、存储和变量
1、C#程序是一组类型声明
如果广泛的描述,C程序是一组函数和数据类型,C++程序是一组函数和类,然而C#程序是一组类型声明
例如,下面是由3个声明在新命名空间MyProgram下的类型组成的程序
namespace MyProgram //创建新的命名空间
{
DeclarationOfTypeA //声明类型
DeclarationOfTypeB //声明类型
class C //声明类型
{
static void Main()
{
...
}
}
}
2、类型是一种模板
类型是一种用来创建数据类型的模板。
模板本身并不是数据结构,但他详细说明了用它构造的对象的特征
3、实例化类型
用某个类型模板创建的实际的对象,称为实例化该对象
namespace MyProgram //创建新的命名空间
{
class A {...}
class C
{
static void Main()
{
A a = new A(); //实例化类型A
}
}
}
4、数据成员和函数成员
数据成员: 保存类型的数据(属性),如人的身高、体重、年龄等
函数成员: 定义类型的行为,如人吃饭、睡觉、运动 等行为
5、预定义类型
预定义简单类型
名称 | 含义 | 范围 | 默认值 |
---|---|---|---|
sbyte | 8位有符号整数 | -128~127 | 0 |
byte | 8位无符号整数 | 0~255 | 0 |
short | 16位有符号整数 | -32768~32768 | 0 |
ushort | 16位无符号整数 | 0~65535 | 0 |
int | 32位有符号整数 | -2147483648~2147483648 | 0 |
uint | 32位无符号整数 | 0~4294967295 | 0 |
long | 64位有符号整数 | -9223372036854775808~9223372036854775808 | 0 |
ulong | 64位无符号整数 | 0~18446744073709551615 | 0 |
float | 单精度浮点数 | 1.5×10-45 ~3.4×1038 | 0.0f |
double | 双精度浮点数 | 5×10-324 ~ 5×10308 | 0.0f |
bool | 布尔型 | true /false | \x0000 |
decimal | 小数类型的有效数字精度为28位 | ±1.0×10-28 ~ ±7.9×10-28 | 0m |
预定义非简单类型
名称 | 含义 |
---|---|
objec | 所有其他类型的基类,包括简单类型 |
string | 0个或多个Unicode字符所组成的序列 |
dynamic | 在使用动态语言编写的程序集时使用 |
6、用户定义类型
类类型:class
结构类型:struct
数组类型:array
枚举类型:enum
委托类型:delegate
接口类型:interface
7、栈和堆
1、栈
栈是一个内存数组,是一个后进先出的数据结构。
2、堆
堆是一个内存区域,在堆里可以分配大块的内存用于存储某类型的数据对象。与栈不同,堆里的内存能够以任意顺序存入和移动。
8、C#类型的分类
值类型 | 引用类型 |
---|---|
sbyte | objec |
byte | string |
short | dynamic |
ushor | |
int | |
uint | |
long | |
ulong | |
float | |
double | |
bool | |
decimal | |
用户定义类型 | |
struct | calss |
enum | interface |
delegate | |
array |
9、变量
4种变量
名称 | 描述 |
---|---|
本地变量 | 在方法的作用区域存储临时数据,不是类型的成员 |
字段 | 保存和类型或类型实例化相关的数据,是类型的成员 |
参数 | 用于从传递数据的临时变量,不是类型的成员 |
数组元素 | 通常是同类数据项构成的有序集合的一个成员,可以为本地变量,也可以为类型的成员 |
1、变量声明
变量的声明和初始化
int var1; //值类型的声明
int var2; //值类型的声明
string str1; //引用类型的声明
var1 = 3; //值类型的初始化
str1 = "FEDCBA";
int var3 = 9; //值类型声明时初始化
string str2 = "ABCDEF"; //引用类型声明时初始化
多变量的声明
int var1 = 5; var2 = 8; var3 = 95;
string str1 = "abcdef"; str2 = "ABCDEF";