1.公共语言运行时(CLR)
通用类型系统CTS:解决不同语言之间的数据类型不同的问题
公共语言规范CLS:解决语言规范的问题
2.NetFramework类库(FCL)
就是一组程序集的集合,包含了大量已经定义好的数据类型
1.using system 引入命名空间,是一块代码区,是一个比文件域小点的的作用域
2.namespace 声明一个命名空间
3.每个文件中有1个或多个命名空间,不同命名空间是不同的作用域
4.class Mainclass 包含Main函数的类称为主类,名字首字大写,一个程序只能有一个主类
5.Main() 程序的入口,只能由一个Main函数
6.用class关键字声明类,不存在全局方法和变量,都包含在类的定义之中
1.只能包含字母,数字,下划线
2.首字母可以是字母下划线和@符号,不能是数字
3.不能为关键字,大小写区分
1.值类型:简单类型 枚举类型 结构类型
2.引用类型:字符串类型 数组类型 类类型 对象类型 接口类型 代理类型
注:
1.float型变量赋值时,后边加f float a=5.5f;
2.double类型赋值 , 后边加d double d=5.5d;
3.浮点型值默认值是double类型
4.{0} 表示引号后边填入变量的下标
1.强制类型转换运算符
int a = 3;
long b = a; 自动类型转换只能从低精度转换到高精度
int c = (int)b; 强制类型转换从高精度到低精度
2.使用System.Convert类的方法
int a = 3;
string b = System.Convert.ToString(a);
long c = 5;
int d = Convert.ToInt32 (c);
double e = 5.5d;
float f = Convert.ToSingle(e);
float j = 4.4f;
double h = Convert.ToDouble (f);
3.使用.Net框架提供的Parse()方法 把字符串转换成数字
string a =“200”; //纯数字才可以
float b = float.parse(a);
double c = double.parse(a);
表示0个或多个字符组成的不可变序列
string s =“hello” ; 重新赋值,内存先重新初始化一块区域,并赋值world
s=“world”; 原来的存放的内存区域不可修改
注:
1.s指向新的字符串,原来的字符串内容没变,并且释放掉了
2.string类型为引用类型,相当于指针
3.string变量本身存储在栈中,变量所指向的值在堆里 引用类型,相当于字符数组
4.可通过s[0],s[1],访问每个字符,每个字符不能改变,字符串的内容不能修改
enum color color r = color.red;
{ console.writeline(r); //red
red, green ,blue int a =(int)r;
}; console.writeline(r); //0
注: 访问权限修饰符,修饰成员访问权限,默认private
private:只能在结构体中访问,其它地方不行
public:结构体外也可以访问
public struct point {
public int x;
public int y; 构造函数用来初始化成员,
public point(int a,int b) 构造函数与结构体名字一样
{ 构造函数没有返回值,不写void,为公有成员
x=a;
y=b; c语言结构体中后边加分号,初始化时的差别
} 不写权限修饰符,返回值有类型,以及创建时有差别
public void dayin()
{
console.writeline(“{0} {1}”,x,y);
}
} //没有分号
一维数组
int []a = new int[]{1,2,3,4,5}
int []b = new int[5];
int []c = {1,2,3,4,5};
int []p = c;
c = new int[10]
注:
c语言里数组名不可以改变,int a[]
c#里[]中不写元素个数
创建空数组要用new int[n],
p直接指向c数组
c#中数组名可以改变,可以指向新的数组!!!!
for (int i = 0; i < p.Length; i++)
{ Console.Write (p[i]); }
foreach (int aa in p)
{ Console.Write (aa);}
foreach 是创建临时变量保存数组中遍历到的元素
in 表示在某数组中注:
二维数组
int [,]a = new int[2,3];
int [,]b ={{1,2},{3,4}};