@[toc]

1.数据类型概述

与c/c++不同的是 整数类型多出了sbyte 和 byte 两种类型 当人大小也非常小占8子节

1.整数类型

sbyte x = 1; //-128~127
byte y = 1; //0~255
short z = 1;  //-32768~32767
ushort a = 1;  //0~65535
int b = 1;  //-2147483648~2147483647
uint c = 1;  //0~4294967295
long d = 1;  //-9223372036854775808~9223372036854775807
ulong e = 1;  //0~18446744073709551615

2.实数类型

与c/c++不同的是多出了 decimal 类型,为了满足高精度的财务和金融计算而引入的,占128子节。

float x = 1;   //3.4E+10的负38次方~3.4E+10的38次方
double y = 1;   //1.7E+10的负308次方~1.7E+10的正308次方
decimal z = 1;   //1.0×10的负28次方~7.9×10的28次方

3.字符类型

char x = 'a';  //0~65535

4.布尔类型

bool x = false;  //true  false

5.结构类型

注意的是c++与c#不同点
c++的struct 内默认类型是public
而c#的默认类型则是private
所以如果想直接赋值 需要在变量名前加public

public struct  wazxy
{
    public int x, y;
}

6.枚举类型

我认为没啥用

2.类型转换

由于c#输入进去的类型为string类型,所以如果想读入其他类型,需要调用函数进行转换
推荐Convert类
如:在这里插入图片描述
当然在整数和实数之间可以进行强制转换。

3.运算符与表达式

以下五个均与c++没有什么不一样
1.算术运算符与算术表达式
2.关系运算符与关系表达式
3.赋值运算符与赋值表达式
4.逻辑运算符与逻辑表达式
5.位运算符

不同

typeof运算符作用: 显示类型
new运算符作用: 用来创建对象和调用构造函数

4.数组的声明

类,接口,委托这些东西放到后面几章说
数组的声明有点类似与java,特别要注意一下

1.一维数组

1.声明了数组之后,就必须为数组分配内存,以保存数组的所有元素。数组是引用类型,所以必须给它分配堆上的内存。为此,应使用new运算符,指定数组中元素的类型和数量来初始化数组的变量。

int[] a = new int[10];

赋初值:

int[] a = new int[10]{1,2,3,4,5,6,7,8,9,10};
//或者
int[] a = {1, 2, 3};

2.二维数组

注意在代码中调用某个值的时候是
a[i,j] 一个方括号中用","隔开

int[,] b = new int[2,2];
b[0, 0] = 0;
b[0, 1] = 1;
b[1, 0] = 2;
b[1, 1] = 3;

//第二种
int[][] a = new int[2][];
a[0] = new int[] { 1,2 };
a[1] = new int[] { 1,2,3 };

//第三种
int[,] arr1 = new int[2,2] { {12,0 },{ 2,3 } };
int[,] arr2 = new int[,] { { 12, 0 }, { 2, 3 } };
int[,] arr3 = { {12,9},{ 2,3} };

当然出了这些还有很多数组的常用操作,例如sort之类的函数,这里就不一一列举了。

5.集合

当然c#中也有很多已经封装好的数据结构,例如:

1.ArrayList(动态数组)

1.创建
ArrayList list =new ArrayList();
2.Add (尾端追加)
list.Add("a");
3.Remove (移除元素)
list.Remove("a");
4.Insert (插入元素)
list.Insert(3,25);
......

2.Queue(队列)

Queue q=new Queue();
1.入队
q.Enqueue(1);
2.出队
q.Dequeue();
3.清空
q.Clear();

3.Stack(栈)

Stack ss=new Stack();
1.入栈
ss.Push(1);
2.出栈
ss.Pop();
3.清空
ss.Clear();

6.杂七杂八

1.object类型

接触了object类型
Object 数据类型可以指向任意数据类型的数据,包括您的应用程序识别的任意对象实例。当您在编译时不知道变量可能指向哪种数据类型时,请使用 Object。
感觉类似于C++11里面的auto类型。

2.其他的系统函数

类似于数字类System.Math和System.DateTime等库函数
懒得写了,毕竟一看就会(有手就行)(其实是太懒了)