两个星期过去了,学过了HTML,css和javascript。这星期我们学了c#语言。
首先介绍一下c#发展的五个阶段:(1)C#1.0-----模仿java;(2)C#2.0-----泛型,委托;(3)C#3.0-----lambda,Linq,WPF,WCF,Silverlight,属性;(4)C#3.5-----异步编程,var ,匿名类;(5)C#4.0-----dynimac。
C#通过命令csc(csharp) 文件名.cs 直接运行编译后的exe文件。C#的特点是纯粹的面向对象的语言,严格区分大小写跨平台的强类型语言。
C#变量的规则是不能以数字,特殊符号开头的。C#变量分为两种类型的变量:
1,值类型 int,double,byte,float,eumn,struct,char,bool,long这些值类型都有一个引用类型与之对应。
2,引用类型string,类,数组,接口,delegate。
注意:默认情况下,c#中的整数类型是int,浮点类型是double类型。
byte:字节类型,只能表示0-255之间的整数。可以直接把整数类型赋值给byte类型。 那么,如果有n个byte类型的变量进行数学运算的时候,那么系统会把运算后的结果转换为int类型。 此时如果把这个结果再次的赋值给byte类型则需要强制类型转换。
如果是小类型的整数类型,在做数学运算的时候,都是把运算的结果转换为int类
float:单精度类型,小数点后面保留的小数位要小于double类型。在定义float类型的时候,后面要加上f,以此说明是float类型。 float类型的变量进行数学运算的时候还是float类型。小类型数据相混运算的时候,先把小类型数据转化大类型数据,在做运算,运算的结果也是大类型。
总结:小类型数据复制给大类型数据的时候,可以直接赋值除(byte)如:byte a= 90;int b = a;大类型数据赋值给小类型数据的时候,要进行强制类型转换(可能损失精度)如:byte a = 0;int b = 789;a = (byte) b;
类型转换:
(1).如果把小类型数据赋值给大类型数据,则系统会进行隐式类型转换。如果把大类型数据赋值给小类型数据,则需要进行显示类型转换。如:类型A a = (类型A) b:意思是把b类型数据强制转换为类型A
(2).通过Convert.ToType()进行转换。
(3).如果把字符串形式的int,double转换为具体int,和double需要通过--Convert.ToInt32();Convert.ToDouble();
如:string age = "90"; int age1 = Convert.ToInt32(age);//int age1 = (int) age;而不能使用强制类型转换。
tring类型:任何类型的数据在和string进行+运算的时候,系统会首先把其他类型转换为string然后在做拼接运算。字符串的拼接的问题---@:可以通过@符号把需要转移的字符都转移,但是如果要转义的字符是"则,需要用两个"代表一个,\:也可以进行转义字符。
运算符: +,-,*,/,>=,<=,==,!=,>,<,++,--,%,||,&&
数组的创建有以下几种方法:
1,Type[] 数组名 = new Type[Size];
2,Type[] 数组名 = {元素,...,元素};
3,Type[] 数组名 = new Type[]{元素,...,元素};
4,多维数组 int[,] table = new int[3,4]
table[0,0]---第一个元素
table[1,2]---第二行第三个元素
创建过程中new 操作符表示在内存中开辟一段连续的空间。 Length:得到数组的长度。下标从0开始。
C#语法:一些常用的语法有:if,while,for,switch,foreach语句是一个比较少用的语句,他的用法如下:
foreach(Type t in Collection)
{
//定义一个t变量到Collection集合中,把Collection中的元素,一个一个拿出来。
}
C#函数有些语法和我以前学的c c++ java有很多相同的语法结构,下面来复习一下C#函数的定义和用法。
(1)方法的定义
[访问修饰符] {static} 返回值类型 函数名 ([参数列表]) {//方法体}
如:public static void SayHello()
{
Console.WriteLine("hello");
}
其中void是没有返回值的,也是一个类型,这个类型代表的含义是函数的返回值为空。int,string,double等所有的数据类型都可以作为函数的返回类型。命名函数的规则是不能使用关键字,不能以数字,特殊字符开头。需要注意的是以后我们见到的一下几种说法都代表一个意思:函数==方法==功能。其中一个特殊的方法主方法:public static void Main(){ }主方法是一个应用程序中唯一入口,只能有一个。
函数的作用是:1,封装代码块。代码的重用性。2,一个函数就是一个整体,起到一个功能。只负责一件事。
(2)函数参数的类型,函数参数类型有4种,其中值穿递比较重要,也是我比较模糊的地方
1,值传递 如:void plus(int a,in b){ } 他传递的是a和b变量中的值。
2,址传递 如:void TestRef(ref int a){ } 他传递的是a这个变量的地址
3,out传递 传递的是a这个变量的地址,要求没有初值。
4,params可变长变量,他的变量的类型是数组类型,在传递的时候,可以是数组,也可以是一些列元素。一般情况下,params声明的参数在最后。如:
public static void TestParam(int a,params int[] b) { b[0]; /* foreach(int c in b) { Console.WriteLine(c); } */ }