C#(WINFORM)学习薛伟,2007年4月,第1页一、C#基础(派得伟业伟业公司内部资料,不得外传!)类型和变量类型C#支持两种类型:“值类型”和“引用类型”。值类型包括简单类型(如char、int和float等)、枚举类型和结构类型。引用类型包括类(Class)类型、接口类型、委托类型和数组类型。变量的类型声明每个变量必须预先声明其类型。如inta;intb=100;floatj=4.5;strings1;用object可以表示所有的类型。预定义类型下表列出了预定义类型,并说明如何使用。类型说明示例范围object所有其他类型的最终基类型objecto=null;string字符串类型;字符串是Unicode字符序列strings=hello;sbyte8位有符号整型sbyteval=12;-128到127short16位有符号整型shortval=12;-32,768到32,767int32位有符号整型intval=12;-2,147,483,648到2,147,483,647long64位有符号整型longval1=12;-9,223,372,036,854,775,808C#(WINFORM)学习薛伟,2007年4月,第2页longval2=34L;到9,223,372,036,854,775,807byte8位无符号整型byteval1=12;0到255ushort16位无符号整型ushortval1=12;0到65,535uint32位无符号整型uintval1=12;uintval2=34U;0到4,294,967,295ulong64位无符号整型ulongval1=12;ulongval2=34U;ulongval3=56L;ulongval4=78UL;0到18,446,744,073,709,551,615float单精度浮点型floatval=1.23F;7位±1.5×10−45到±3.4×1038double双精度浮点型doubleval1=1.23;doubleval2=4.56D;15-16±5.0×10−324到±1.7×10308bool布尔型;bool值或为真或为假boolval1=true;boolval2=false;char字符类型;char值是一个Unicode字符charval='h';decimal精确的小数类型,具有28个有效数字decimalval=1.23M;28-29±1.0×10−28到±7.9×1028DateTime变量转换简单转换:floatf=100.1234f;可以用括号转换:shorts=(short)f也可以利用Convert方法来转换:strings1;s1=Convert.ToString(a);MessageBox.Show(s1);常用Convert方法有:C#(WINFORM)学习薛伟,2007年4月,第3页C#备注Convert.ToBooleanConvert.ToByteConvert.ToCharConvert.ToDateTimeConvert.ToDecimalConvert.ToDoubleConvert.ToInt16Convert.ToInt32Convert.ToInt64Convert.ToSByteConvert.ToSingleConvert.ToStringConvert.ToUInt16Convert.ToUInt32Convert.ToUInt64Math类常用科学计算方法:C#备注Math.Abs绝对值Math.Sqrt开方Math.Round取整,四舍五入Math.Floor取整,放弃小数Math.Cos余弦Math.Sin正弦Math.Tan正切Math.Exp返回e的指定次幂Math.Log对数Math.Pow(x,y)数字x的y次幂Math.Max(x,y)返回较大者C#(WINFORM)学习薛伟,2007年4月,第4页Math.Min(x,y)返回较小者枚举型一般为字符串,可以定义带数字的枚举型,示例为:enumColor{Red=1,Blue=2,Green=3}classShape{publicintFill(Colorcolor){intii;switch(color){caseColor.Red:ii=10;break;caseColor.Blue:ii=11;break;caseColor.Green:ii=12;break;default:ii=-1;break;}returnii;}}privatevoidbutton1_Click(objectsender,System.EventArgse){inti;Shapes1=newShape();i=s1.Fill((Color)2);//i=s1.Fill(Color.Blue);MessageBox.Show(i.ToString());C#(WINFORM)学习薛伟,2007年4月,第5页}Enum需要放在class外面,才能被其它class的程序调用。C#关键字abstracteventnewstructasexplicitnullswitchbaseexternobjectthisboolfalseoperatorthrowbreakfinallyouttruebytefixedoverridetrycasefloatparamstypeofcatchforprivateuintcharforeachprotectedulongcheckedgotopublicuncheckedclassifreadonlyunsafeconstimplicitrefushortcontinueinreturnusingdecimalintsbytevirtualdefaultinterfacesealedvolatiledelegateinternalshortvoiddoissizeofwhiledoublelockstackallocelselongstaticenumnamespacestring数组定义数组是一种排列有序的数据结构,包含于数组中的变量被称为数组的元素,它们都有相同的类型。数组声明int[]array1=newint[5];int[,,]array3=newint[10,20,30];int[]array1=newint[]{1,2,4};C#(WINFORM)学习薛伟,2007年4月,第6页数组引用array1[0]=a1;注意,如果定义数组为int[5],则从0~4。数组长度line0.GetLength(1)数组赋值可以从一个已经赋值的数组array2向未赋值的同等数组array1赋值,用array1=array2;这时,array1就变成和array2一样的数组了。集合集合的使用集合可以看成是可以随意添加的数组,因此凡是在使用数组的场合,都可以使用集合。而且集合的元素可以是任意对象,操作也比数组灵活的多。使用集合时,必须注意集合的生命期问题。如果有两个集合L1和L2,使用了L1=L2;后,只要L2生命期没有终结,它的以后的变化就可能会影响到L1的数值。因此在赋值后应该及时销毁或者初始化L2,以免发生不可预见的错误。比较使用Contains方法。ArrayListArray1=newArrayList();Array1.Add(as);boolb1=Array1.Contains(as);MessageBox.Show(b1.ToString());C#(WINFORM)学习薛伟,2007年4月,第7页找到集合中数量最多的一个元素利用方法来查找,可以返回两个变量。objectJmax0(ArrayListv11,refintjj){inti;objectj0=0;ArrayListy11=newArrayList();//各个不同的元素的集合int[]y12=newint[v11.Count];//记录各个元素数量的数组intxmax=0;//最大的一个元素的数量for(i=0;iv11.Count;i++){j0=(object)v11[i];if(y11.Contains(j0)){y12[y11.IndexOf(j0)]++;}else{y11.Add(j0);y12[y11.Count-1]=1;}}xmax=y12[0];j0=(object)y11[0];for(i=1;iy11.Count;i++){if(y12[i]xmax){xmax=y12[i];j0=(object)y11[i];}}jj=xmax;returnj0;}privatevoidbutton1_Click(objectsender,System.EventArgse){ArrayListArray1=newArrayList();intjj=0;C#(WINFORM)学习薛伟,2007年4月,第8页doublej0=0;objectj1=0;j0=2.3;Array1.Add(j0);j0=2.3;Array1.Add(j0);j0=1.000f;Array1.Add(j0);j0=2.3;Array1.Add(j0);j0=1;Array1.Add(j0);j1=Jmax0(Array1,refjj);MessageBox.Show(j1.ToString()++jj.ToString());}运算符和判断判断if(x10)if(y20)Console.Write(Statement_1);elseConsole.Write(Statement_2);关系运算符,=,,=等于:==不等于:!=判断字符串string和char用Equals方法。逻辑运算符与:a&b或:a|bC#(WINFORM)学习薛伟,2007年4月,第9页非:!A模数运算符模数运算符(%)计算第二个操作数除第一个操作数后的余数。所有数值类型都具有预定义的模数运算符。如Console.WriteLine(5%2);//=1Console.WriteLine(-5%2);//=-1Console.WriteLine(5.0%2.2);//=0.6Console.WriteLine(-5.2%2.0);//=-1.2经常用模数运算符来判断整数为奇数(=1)或偶数(=0)。循环无条件循环intsum,x;sum=0;for(x=1;x=100;x++){sum+=x;}有条件循环privatevoidbutton1_Click(objectsender,System.EventArgse){intsum=0;intx=0;while((sum100)&(x20)){x++;sum+=x;}strings2=Convert.ToString(x);MessageBox.Show(s2);}运行显示14。C#(WINFORM)学习薛伟,2007年4月,第10页如果改为while((sum100)|(x20))运行显示20。多重选择switch(i){case0:CaseZero();break;case1:CaseOne();break;default:CaseOthers();break;}每个case后面,必须有break或者goto,不允许贯穿。Gotogoto语句将程序控制直接传递给标记语句。for(inti=0;ix;i++)for(intj=0;jy;j++)if(myArray[i,j].Equals(myNumber))gotoFound;Console.WriteLine(Thenumber{0}wasnotfound.,myNumber);gotoFinish;Found:C#(WINFORM)学习薛伟,2007年4月,第11页Console.WriteLine(Thenumber{0}isfound.,myNumber);Finish:Console.WriteLine(Endofsearch.);f