《Windows应用程序编程》复习资料整理.docx

上传人:b****8 文档编号:9985943 上传时间:2023-02-07 格式:DOCX 页数:17 大小:22.04KB
下载 相关 举报
《Windows应用程序编程》复习资料整理.docx_第1页
第1页 / 共17页
《Windows应用程序编程》复习资料整理.docx_第2页
第2页 / 共17页
《Windows应用程序编程》复习资料整理.docx_第3页
第3页 / 共17页
《Windows应用程序编程》复习资料整理.docx_第4页
第4页 / 共17页
《Windows应用程序编程》复习资料整理.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

《Windows应用程序编程》复习资料整理.docx

《《Windows应用程序编程》复习资料整理.docx》由会员分享,可在线阅读,更多相关《《Windows应用程序编程》复习资料整理.docx(17页珍藏版)》请在冰豆网上搜索。

《Windows应用程序编程》复习资料整理.docx

《Windows应用程序编程》复习资料整理

(一)注释语句

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

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

或者三个反斜杠和换行符之中(可以被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;i<10;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'sDesciption

classClass1

{

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声明和后面的元素列值可以只选一个,就能声明并初始化数组。

5.遍历方法

A.For循环到.Length

for(inti=0;i

{

Console.WriteLine(friendNames[i]);

}

B.Foreach进行只读访问

foreach(stringlistNameinfriendNames)

{

Console.WriteLine(listName);

}

6.二维数组(多维)

变量类型[,]数组名=new变量类型[一维元素个数,二维元素个数]{{元素00,元素01,元素02...},{元素10,元素11,元素12...}...}

7.直角数组(交错数组,数组中的数组)

8.字符串操作:

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.参数数组:

staticintsumVals(paramsint[]vals)

{

intsum=0;

foreach(intvalinvals)

{

sum+=val;

}

returnsum;

}

staticvoidMain(string[]args)

{

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

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

}

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

staticvoidshowDouble(refintval)//引用传递参数

{

val*=2;

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

}

staticvoidshowDouble2(intval)//值传递参数

{

val*=2;

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

}

staticvoidshowDouble3(intval,outintvalIndex)//out输出参数

{

valIndex=1;

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()函数;

staticvoidMain()

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

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

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

(一十)面向对象基础

(一十一)类

1)类的定义

class类名

{

//类成员

}

2)类的成员

使用访问修饰符public、protected、internal或private可以为成员指定以下声明的可访问性之一。

声明的可访问性含义

public访问不受限制。

protected访问仅限于包含类或从包含类派生的类型。

internal访问仅限于当前程序集。

protectedinternal访问仅限于从包含类派生的当前程序集或类型。

private访问仅限于包含类型。

一个成员或类型只能有一个访问修饰符,但使用protectedinternal组合时除外。

命名空间上不允许使用访问修饰符。

命名空间没有访问限制。

3)this保留字

       仅限于在构造函数,类的成员和类的实例中使用。

4)成员常量

       publicconstinti=10;

5)构造函数:

      a、构造函数通常与类名相同。

      b、构造函数不声明返回类型。

      c、构造函数总是public的,如果为private则表示该类不能被实例话。

         例子:

classA

                 {

                 publicA(inti){...};  //构造函数

                 }

6)析构函数

      a、析构函数的名字与类名相同,只是前面有一个波浪~符号。

(一十二)方法:

1)修饰符:

new、public、protected、internal、private、static、virtual、sealed、override、abstract、extern

         说明:

对于abstract、extern方法的执行体只有一个分号;也就是只有声明没有实现。

2)参数

A.值参数-------不含任何修饰符号 :

传递的是值的拷贝,任何修改不影响原来的参数

B.引用参数------以ref为修饰符   :

传递的是值的地址,

C.输出参数------以out为修饰符    :

输出参数与ref参数的区别是:

调用函数前不需要对该参数初始话

名词解释:

 1、CLR---------CommonLanguageRuntime------------公共语言运行环境,管理着代码的执行。

 2、JIT---------JustInTime-----------------------即时编译器。

作用:

执行时将中间语言编译成本地代码

 3、MSIL--------MicroSoftIntermediateLanguage-----微软中间语言。

编译时编译器将代码转化为中间语言和元数据。

 4、名字空间----相当与java中的包(package)

1)起源:

  微软internet平台战略,2000-6-22发布.net框架

2)特点:

  1、完全支持xml,与web紧密连接

  2、对象自动回收

  3、跨语言(来自于他的虚拟对象系统)

3).NET的结构

   1、虚拟对象系统(VOS):

跨语言集成,程序员可以选择自己喜欢的开发语言,只要他支持.net

   2、元数据---------------:

对VOS中类型描叙代码的一种称呼,编译时自动生成,与源代码共同包好在二进制代码文件中

   3、公共语言规范(CLS)

   4、虚拟执行系统(VES):

运行的环境             

4)HelloWorld

  usingSystem;

  classHelloWorld{

    staticvoidMain(){

     Console.Write("HelloWorld!

");

     }

  }

 说明:

源代码后缀为.cs

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

当前位置:首页 > 农林牧渔 > 林学

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

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