C#基础语法大全.docx

上传人:b****4 文档编号:27035776 上传时间:2023-06-26 格式:DOCX 页数:17 大小:23.68KB
下载 相关 举报
C#基础语法大全.docx_第1页
第1页 / 共17页
C#基础语法大全.docx_第2页
第2页 / 共17页
C#基础语法大全.docx_第3页
第3页 / 共17页
C#基础语法大全.docx_第4页
第4页 / 共17页
C#基础语法大全.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

C#基础语法大全.docx

《C#基础语法大全.docx》由会员分享,可在线阅读,更多相关《C#基础语法大全.docx(17页珍藏版)》请在冰豆网上搜索。

C#基础语法大全.docx

C#基础语法大全

一,注释语句

  /**//*注释语句包含在"反斜杠*"和"*反斜杠"中,

  或者两个反斜杠和换行符之中,

  或者三个反斜杠和换行符之中(可以被VS自动识别为文件注释以提取)

  要注意注释中的\,该续行符会把下一行连上来一起注释掉出错。

*/

  static

 voidMain(string[]args)

    {//语句块包含在{}中

      intMyInterger;//语句以;结束

      string  MyString;/**////忽略空白字符(空格/回车/TAB)

      MyInterger= 17;

    }

  //要注意防止注释嵌套出错,可用#if,#endif预处理语句。

二,数据类型

  1,基本型/内置型 用户自定义型

  A,内置类型:

CS使用.netFrameWork库中的数据类型

  sbyte

 =System.SByte,...

类型 字节数 解释

byte 1 无符号字节型

sbyte 1 有符号字节型

short 2 有符号短字节型

ushort 2 无符号短字节型

int 4 有符号整型

uint 4 无符号整型

long 8 有符号长整型

ulong 8 无符号长整型

float 4 浮点数

double 8 双精度数

decimal

 8 固定精度数

string   unicode字串型

char   unicode字符型

bool   真假布尔型//只接受true和false两种值。

不接受任何整数类型。

B,用户定义类型包括:

类类型(class)

结构类型(struct)

接口类型(interface)

  2,值类型(ValueTypes)和引用类型(ReferenceTypes)

  A,值类型:

内存顺序分配在栈中。

他们包括:

所有基本或内置类型(不包括string类型)、结构类型、枚举类型(enumtype)

  B,引用类型:

内存非线性分配在堆中,当它们不再被使用时CS通过垃圾收集器自动释放内存(C++用delete)。

它们使用new运算符来创建。

  引用类型包括:

类类型、接口类型、象数组这样的集合类型类型、字串类型、枚举类型

  结构型适于快速访问和拥有少量成员的数据类型。

如果涉及量较多,你应该创建一个类来实现他。

  3,数据类型转换

  隐式转换:

从低精度的转换到高精度的,所以不可能转换到char;另外可以把0隐式转换成枚举型,其他整数不行。

  显式转换

       static

 voidMain(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;i<10;I++)

...{

 text=

  "Line"

  +Convert.ToString(i);//在循环中未初始化,在退出循环的时候会丢失值,再引用就出错。

 Console.WriteLine("{0},text);

}

Console.WriteLine("Lasttxetoutputinloop:

{0},text);//出错。

改正方法是在循环外初始化:

stringtext="";

  (4)命名约定:

简单的用camelCase,复杂的用PascalCase

  (5)变量的七种类型:

classA

...{

 public

  static

  intx;//静态变量,存在期从类装载直到该程序结束。

 inty;//非静态变量,或实例变量,从类实例创建到实例空间释放。

 

 /**//*v[0]是数组元素,a是值参数,b是引用参数,c是输出参数*/

 voidF(int[]v,inta,ref

  intb,out

  intc)...{

   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'sDesciption

classClass1

 ...{

 static

   voidMain(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循环到.Length

for(i=0,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..相当于一个Label

      Case结果4:

      代码4;

      Return;

      Case结果5:

      Case结果6:

      Case结果7:

      代码567;//只要满足上面三个Case之一就执行。

      break;

      ...

      Default:

      代码;

      break;

     }

  C,三元运算语句:

(条件)?

True结果:

False结果

    常用于简单赋值语句:

stringmyString=(myInteger<10)?

"Lessthan10":

"Greatthanorequalto";

    或者用于简单格式化文本语句:

Console.WriteLine("Iam{0}year{1}old.",myinteger,myinteger==1?

"":

"s");

八,循环语句:

  A,Do...While:

当条件为True时循环。

    Do

    ...{...}

    While(条件);//分号不可少

  B,While...:

当条件为True时循环。

    While(条件)

    ...{...}  

  C,For...:

使用计数器循环。

    For(变量;条件;操作)//可以在此时声明变量,但作用域就仅限于循环内了。

    ...{...

    Break;//跳出整个循环

    Return;

    Continue;//中止当前循环,继续下一个循环

    Goto标签;//禁止从循环外部用goto跳入循环内部

    }

九,函数

A,函数定义:

   static返回值类型/void函数名(参数类型1参数1,参数类型2参数2,...)

   ...{

     ...

     return返回值;//return必须在函数结束前被处理,不能跳过

     //return;//当用于void时用不带返回值的return来中止函数。

   }

B,参数数组:

 static

  intsumVals(params

  int[]vals)

 ...{

   intsum=0;

   foreach(intvalinvals)

   ...{

     sum+=val;

   }

   returnsum;

 }

 static

  voidMain(string[]args)

 ...{

   intsum=sumVals(1,5,2,9,8);

   Console.WriteLine("SummedValues={0}",sum);

 }

C,值传递参数/引用传递参数/out输出参数

static

  voidshowDouble(ref

  intval)//引用传递参数

...{

 val*=2;

 Console.WriteLie("valdoubled={0}",val);

}

static

  voidshowDouble2(intval)//值传递参数

...{

 val*=2;

 Console.WriteLine("valdoubled={0}",val);

}

static

  voidshowDouble3(intval,out

  intvalIndex)//out输出参数

...{

 val*=2;

 valIndex++;

 Console.WriteLine("valdoubled={0}",val);

}

intmyNmuber=5;

showDouble(refmyNumber);//引用传递参数,会改变myNumber值,所以要求myNumber必须不是常量或者未初始化的变量。

showDouble2(myNumber);//值传递参数,不会改变myNumber值

intvalindex;//out输出参数,不用初始化,初始化了也会在函数开始执行时丢失值。

showDouble3(myNumber,outvalIndex);

D,全局变量

static/const变量名//const定义的全局变量是只读的

当全局变量与局部变量同名时,局部变量优先,要用类似class1.myString来引用全局变量。

E,Main()函数;

static

  voidMain()

static

  voidMain(string[]args)//args是函数命令行参数

static

  intMain()//返回一个表示函数终止状态的int值

static

  intMain(string[]args)//返回一个表示函数终止状态的int值

F,结构中的函数

G,同名函数的重载:

同名,签名不同,系统自动识别使用哪个函数

H,委托:

用于把引用存储为函数以灵活调用函数

十,面向对象基础

十一,类

1,类的定义

class类名

...{

 //类成员

}

internal/public

sealed/abstract

十和,接口

interfaceIMyInterface

...{

 //接口成员

}

 

C#语法入门

下面开始C#之行。

在开始学习C#之前,先了解下C#语句的特点:

1.C#是区别大小。

2.每一句都以分号结束,不象VB.NET。

3.多个语句通过分号可以写在一行,不过不推荐,因为不清晰。

OK,开始了。

先了解下其数据类型:

booltrue或false

byte8位无符号整数

short16位整数

int32位整数

long64位整数

float32位浮点数

double64位浮点数

char16位字符

string多个16位字符

宽度窄的(即字节数少的)数据类型可以直接赋给较宽的数据类型,并会自动转换为新类型。

例:

floata=9.9f;

intb=4;

a=b;

//上述把一个整型的4转换成了浮点型.同样也可以通过强制类型转换将宽类型的缩成窄类型例:

floata=9.9f;

intb=4;

b=(int)a;

//注意必须把要转换的类型名称放在圆括号内,并放在其前面字符串与数值互换:

stringa=Convert.ToString(b);

floata=Convert.ToSingle(b);

同样也可以像C语言那样格式化输出:

floata=3.1415926728f;

stringb=a.ToString("##.##");

变量与常量声明:

C#中允许一条语句声明同一类型的多个变量

inta,b;

但为了语句清晰推荐将多个声明写成多个语句。

有一点要注意,就是如果在声明数值型变量时没有小数部分,则自动为整数类型,有小数部分的,则自动为double类型,而不是float类型,可通过下面声明,转换为不同类型:

floata=1.2f;longb=23L;

对于常量声明,习惯用大写符号来表示常数,如:

constfloatPI=3.1415926;

对于字符声明,得用单引号括起来,如:

chara=''d'';

还可以这样赋值:

inta=b=c=2;

虽然方便,但并不推荐,推荐将其拆成三个语句来写,这样结构也清晰。

(注:

C#的变量名长度是任意的,可以由数字和大小写字母混合组成,但第一个必须是字母。

关于C#中的转义字符:

\n-------------------------换行

\r-------------------------回车

\t-------------------------制表符

\b-------------------------退格

\f-------------------------换页

\0-------------------

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 农学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1