您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 给排水/暖通与智能化 > C#基础语法大全
一,注释语句/*注释语句包含在反斜杠*和*反斜杠中,或者两个反斜杠和换行符之中,或者三个反斜杠和换行符之中(可以被VS自动识别为文件注释以提取)要注意注释中的\,该续行符会把下一行连上来一起注释掉出错。*/staticvoidMain(string[]args){//语句块包含在{}中intMyInterger;//语句以;结束stringMyString;///忽略空白字符(空格/回车/TAB)MyInterger=17;}//要注意防止注释嵌套出错,可用#if,#endif预处理语句。二,数据类型1,基本型/内置型用户自定义型A,内置类型:CS使用.netFrameWork库中的数据类型sbyte=System.SByte,...类型字节数解释byte1无符号字节型sbyte1有符号字节型short2有符号短字节型ushort2无符号短字节型int4有符号整型uint4无符号整型long8有符号长整型ulong8无符号长整型float4浮点数double8双精度数decimal8固定精度数stringunicode字串型charunicode字符型bool真假布尔型//只接受true和false两种值。不接受任何整数类型。B,用户定义类型包括:类类型(class)结构类型(struct)接口类型(interface)2,值类型(ValueTypes)和引用类型(ReferenceTypes)A,值类型:内存顺序分配在栈中。他们包括:所有基本或内置类型(不包括string类型)、结构类型、枚举类型(enumtype)B,引用类型:内存非线性分配在堆中,当它们不再被使用时CS通过垃圾收集器自动释放内存(C++用delete)。它们使用new运算符来创建。引用类型包括:类类型、接口类型、象数组这样的集合类型类型、字串类型、枚举类型结构型适于快速访问和拥有少量成员的数据类型。如果涉及量较多,你应该创建一个类来实现他。3,数据类型转换隐式转换:从低精度的转换到高精度的,所以不可能转换到char;另外可以把0隐式转换成枚举型,其他整数不行。显式转换staticvoidMain(string[]args){shortshortResult,shortVal=4;intintegerVal=67;longlongResult;floatfloatVal=10.5F;doubledoubleResult,doubleVal=99.999;stringstringResult,stringVal=17;boolboolVal=true;Console.WriteLine(VariableConversionExamples\n数据类型转换范例\n);doubleResult=floatVal*shortVal;Console.WriteLine(Implicit,-double:{0}*{1}-{2},floatVal,shortVal,doubleResult);shortResult=(short)floatVal;Console.WriteLine(Implicit,-short:{0}-{1},floatVal,shortResult);stringResult=Convert.ToString(boolVal)+Convert.ToString(doubleVal);Console.WriteLine(Explicit,-string:\{0}\+\{1}\-{2},boolVal,doubleVal,stringResult);longResult=integerVal+Convert.ToInt64(stringVal);Console.WriteLine(Mixed,-long{0}+{1}-{2},integerVal,stringVal,longResult);}三,变量:1,普通变量:(1),命名规则:字母或_或@+字母或_或数字(/用于转义,@用于逐个转义指定,@常用于保留关键字前以保持与其他语言兼容)(2),声明变量:变量类型变量名变量赋值:变量=要赋的值C#变量被访问之前必须被初始化;否则编译时会报错。因此,不可能访问一个未初始化变量(如不确定的指针、超出数组边界的表达式)。变量在使用前最好习惯是要先声明和初始化。(3)C#中没有全局的的变量或全局函数,全局方式的操作是通过静态函数和静态变量来实现的。inti;stringtext;//在循环外未初始化for(i=0;i10;I++){text=Line+Convert.ToString(i);//在循环中未初始化,在退出循环的时候会丢失值,再引用就出错。Console.WriteLine({0},text);}Console.WriteLine(Lasttxetoutputinloop:{0},text);//出错。改正方法是在循环外初始化:stringtext=;(4)命名约定:简单的用camelCase,复杂的用PascalCase(5)变量的七种类型:classA{publicstaticintx;//静态变量,存在期从类装载直到该程序结束。inty;//非静态变量,或实例变量,从类实例创建到实例空间释放。/*v[0]是数组元素,a是值参数,b是引用参数,c是输出参数*/voidF(int[]v,inta,refintb,outintc){inti=1;//局部变量,不会被初始化c=a+b++;//}}2,枚举enum枚举名:枚举值类型(默认是int,默认赋值0,1,2...){枚举值1=...,枚举值2=...,枚举值3,//不赋值的话,默认为最后一个明确具体值的值+1...}枚举名变量名=枚举名.枚举值namespaceCh05Ex02{enumorientation:byte{north=1,south=2,east=3,west=4}///Class1'sDesciptionclassClass1{staticvoidMain(string[]args){bytedirectionByte;stringdirectionString;orientationmyDirection=orientation.north;Console.WriteLine(mydirection={0},myDirection);directionByte=(byte)myDirection;//因为enum存得下byte,所以理论上可以正确地反过来转换,但逻辑上不一定正确。myDirection=(orientation)myByte;directionString=Convert.ToString(myDirection);//等价命令是directionString=myDirection.ToString();//因为不单是把枚举变量值转存到string变量中,所以不能用string(mydirection);//反向转换命令是orientationmyDirection=(orientation)Enum.Parse(typeof(orientation),myString);但由于enum不一定存得下string,所以可能出错。如myString赋值为North,就不能映射到orientation中的north,出错。Console.WriteLine(byteequivalent={0},directionByte);Console.WriteLine(stringequivalent={0},directionString);}}}3,结构struct结构名:{访问方式1变量类型1变量名1;//访问方式public/private访问方式2变量类型2变量名2;...}结构名结构变量名;结构变量名.枚举值=...;4,一维数组变量类型[]数组名=new变量类型[元素个数]{元素0,元素1,元素2...}//元素个数必须是整数或者整数常量,而且必须与后面的元素列值个数相同,否则出错。元素个数的new声明和后面的元素列值可以只选一个,就能声明并初始化数组。遍历方法A,For循环到.Lengthfor(i=0,ifriendNames.Length,i++){Console.WriteLine(friendNames[i]);}B,Foreach进行只读访问foreach(stringlistNameinfriendNames){Console.WriteLine(listName);}5,二维数组(多维)变量类型[,]数组名=new变量类型[一维元素个数,二维元素个数]{{元素00,元素01,元素02...},{元素10,元素11,元素12...}...}6,直角数组(交错数组,数组中的数组)7,字符串操作:stringmyString=Ihaveadream.;charmyChar=myString[2];//把string变量当作只读的char数组使用,不能改写myString[2]char[]myChars=myString.ToCharArray();char[]separator={''};//设定分隔符string[]myWords=myString.Split(separator);//分隔成数组Console.WriteLine(myStringhave{0}chars,myString.Length);myString=myString.ToLower();//转小写myString=myString.ToUpper();//转大写myString=myString.Trim();//删前后空格myString=myString.TrimStart();//删前空格myString=myString.TrimEnd();//删后空格myString=myString.PadLeft(位数);//前补空格到指定位数myString=myString.PadRight(位数);//后补空格到指定位数myString=myString.PadLeft(位数,字符);//前补指定字符到指定位数char[]trimChars={e,#,*};myString=myString.trim(trimChars);//删指定字符四,常量:ConstintintTwo=2(必须声明的同时赋值)五,运算符:按优先级顺序排列算术运算符:前缀的++和--,前缀一元的+和-乘*除/求余%加+减-位移运算符:,比较运算符:小于大于小于等于=大于等于=比较运算符:==,!=逻辑运算符:&逻辑运算符:^逻辑运算符:|逻辑运算符:&&逻辑运算符:||比较运算符:等于=*=/=%=+=-===&=^=|=后缀的++和--六,名称空间usingsystem;//system是.netFrameWork应用程序根命名空间,之后就能在全局名称空间引用system中的代码。namespace空间名称{using空间名称2.代码2;//之后就能在代码1处直接引用代码2代码1;namespace空间名称2{代码2;}}七,条件语句A,If语句:通用判断If(条件1)代码1;Else代码2;If(条件1){}Else{}B,Switch语句:用于同条件多结果判断Switch(条件){Case结果1:代码1;break;Case结果2:代码2;break;Case结果3:代码3;gotoCase结果2;//此时Case..相当于一个LabelCase结果4:代码4;Return;Case结果5:Case结果6:Case结果7:代码567;//只要满足上面三个Case之一就执行。break;...Default:代码;break;}C,三元运算语句:(条件)?True结果:False结果常用于简单赋值语句:stringmyString=(myInteger10)?Lessthan10:Greatthanorequalto;或者用于简单格
本文标题:C#基础语法大全
链接地址:https://www.777doc.com/doc-4694452 .html