c++转C#转型培训.docx

上传人:b****2 文档编号:2065652 上传时间:2022-10-26 格式:DOCX 页数:53 大小:66.96KB
下载 相关 举报
c++转C#转型培训.docx_第1页
第1页 / 共53页
c++转C#转型培训.docx_第2页
第2页 / 共53页
c++转C#转型培训.docx_第3页
第3页 / 共53页
c++转C#转型培训.docx_第4页
第4页 / 共53页
c++转C#转型培训.docx_第5页
第5页 / 共53页
点击查看更多>>
下载资源
资源描述

c++转C#转型培训.docx

《c++转C#转型培训.docx》由会员分享,可在线阅读,更多相关《c++转C#转型培训.docx(53页珍藏版)》请在冰豆网上搜索。

c++转C#转型培训.docx

c++转C#转型培训

复习题

1.什么是类?

什么是结构体?

二者有什么区别?

相同点是什么?

你经常使用类还是结构体?

为什么?

类:

同一类对象共同属性和行为的抽象

结构体:

同一类共同属性和行为的抽象

二者区别:

类:

引用类型结构体:

值类型

二者相同点:

对共同属性和行为的抽象

2..怎样理解静态变量和静态方法?

静态构造函数的作用是什么?

静态变量:

属于类,不属于对象

静态方法:

不用创建类的实例,直接使用类的方法,方法变量在栈上,

静态构造函数的作用:

初始化类的静态数据成员,在代码加载时执行;

程序中无法调用静态构造函数,此前的任何修饰符都是无效的;

静态构造函数,没有参数

3.值类型与引用类型有什么区别?

值类型:

数据存储在栈上,直接存储数据本身

引用类型:

数据存储在堆上,在栈上引用其地址

二者区别:

●所有内置对象,除了object和string以外,都是值类型,所有用户定义类型,除了结构体都是引用类型;

 

●C#内置值类型(13种)

类型

大小(字节)

.net类型

说明

byte

1

Byte

无符号(0-255)

 

 

 

sbyte

1

Sbyte

有符号(-128~127)

short

2

Int16

有符号(short)

(-32768~32767)

ushort

2

Unt16

无符号(short)

(0~65535)

Int

4

Int32

Uint

4

Uint32

Long

8

Int64

Ulong

8

Uint64

Char

2

Char

Unicode字符

float

4

Single

Double

8

Double

Decimal

8

Decimal

bool

1

Boolean

Trueorfalse

●除了基本类型,C#还有两种值类型:

enum(枚举)和struct(结构);

●编译器会默认带小数点的数位double类型,要赋值给一个float型变量,需要在数字后面加上f;

●常见转义字符:

\’单引号\”双引号\\反斜杠\0空\a警铃\b回退\f换页\n换行\r回车\t水平制表\v垂直制表

4.override与重载有什么区别?

Override:

覆盖:

在继承关系中,父类中的虚方法,在子类中需要重写时

Overload:

重载:

同一个类中,函数名相同,参数列表不同,实现不同功能

5.你在什么情况下会用到虚方法?

它与接口有什么不同?

子类要重写父类中的方法时,父类中方法应声明为虚方法;

接口:

只有方法声明,没有方法体,可以有属性和索引器(都是方法),有概念上的共同特征,要用接口实现,没有方法体

虚方法:

不但有方法声明,还要有方法体

6.什么是抽象方法?

什么是抽象类?

抽象方法:

只有方法签名,没有方法体

抽象类:

类前加关键字abstract,则为抽象类,抽象类不能创建对象

一个类中,如果有抽象方法,则该类一定位抽象类;但是抽象类中不一定有抽象方法

7.怎样理解类、抽象类、和接口之间的异同?

抽象程度不同:

接口:

最高程度抽象,忽略对象,只考察行为概念,不考虑行为的具体实现

类:

对对象属性和行为的抽象,以及重点考察方法的具体实现过程

抽象类:

二者中间:

行为一样,实现不同

8..c#是一种纯粹面向对象的语言。

面向对象语言具有什么特点?

抽象,封装(结果是类),继承,多态

9.类和类之间有哪些关系?

继承,多态,聚合,组合

10.@的作用是什么?

是转义字符失效,用在常量字符串前

表示常量字符串没有需要转义的字符

11.什么是序列化?

为什么要序列化?

(什么时候必须作序列化?

)如何实现序列化?

序列化:

把对象数据成员转化为字节流,只序列化数据成员,不序列化方法

为了把对象保存到存储介质或者在网络上传输,做序列化!

默认的序列化方法:

类的定义前加属性:

Serializable,编译器会将序列化方法添加到类中

自定义序列化方法:

接口:

ISerilizable(GetOjbectData方法),还需要加上属性

凡序列化:

BinaryFormatter,SoapFormatter

12.阐述C#中的访问修饰符。

类和类的成员的访问修饰符分别有哪些?

权限是什么?

类中的Public:

任何地方都可用,Internal:

当前程序集中可用

类成员的

Public:

Protected:

本身和子类

Private:

13.什么是操作符重载?

为什么要操作符重载?

如何实现操作符重载?

操作符重载:

在不改变操作符固有的含义情况下,重新定义操作符,目的:

扩大操作符的原有作用范围,必须公有,静态,放在一个类中

四对操作符必须成对重载:

><;>=<=;==!

=;true,false;

PublicStatic返回类型operator——(参数列表),该操作符,作用在该类上

ClassA

{

PublicStatic返回类型operator——(Aa,。

)//必须出现一个

}

14.C#中有指针吗?

十三种基本数据类型有指针,其他数据类型没有指针,在非安全模式下用

15..c#中的委托是什么?

事件是不是一种委托?

委托的作用是什么?

委托:

是一种特殊的类:

不用Class而用Delegate定义,

目的:

封装一个方法的名称

作用:

取代C++中的函数指针,把方法封装在委托对象中

定义委托对象,达到传递方法的目的

事件时委托定义的一个变量,事件只能作为类的数据成员出现,不能再方法体中出现

16.什么是应用程序域?

将进程的进一步划分为多个应用程序域,每个应用程序域运行一个应用程序。

应用程序域之间相互隔离,互不影响。

17.怎样理解托管代码?

运行在。

NET平台上的代码,运行在CLR(CommomLanguageRuntime)公共语言运行库上的代码,都是托管代码

18.怎样理解强类型系统?

强类型系统:

声明变量时,就指定其存放的数据类型,如C#;JavaScript是弱类型系统

19.解释装箱和拆箱

装箱:

值类型到Ojbect类型,或者该值类型所实现的任何接口类型之间的转换。

对值类型装箱,会在堆上分配一个实例对象,并将该值复制到新的对象中。

在栈上在堆上

Inti=123;

图示:

Objecto=i;

拆箱与该操作相反。

20.const和readonly的区别是什么?

ref、out、和params的作用和区别是什么?

Const:

定义常量,只能在定义时,初始化;(只能在构造函数时赋值)

Readonly:

只读变量,可以在定义时初始化,也可以在构造函数里初始化(定义时与构造函数时赋值)

Ref:

强制引用传递,阻止形参对实参的临时拷贝,实参和形参指向同一存储区域,

Out:

Params:

修饰传递可变参数的数组,(主要用于函数个数不定得时候)

21.这些符号的含意是什么:

&、&&、|、||、!

、^、~。

&:

按位与,

&&:

逻辑与,操作数为逻辑表达式,;

短路现象:

a1=T,a2=F,(a1=null计算A1&&a2汇报错)a1&&a2,a2&&a1,a1||a2,a2||a1,1.结果一样2。

效率不一样。

|:

||:

!

:

逻辑非

~:

按位取反

^:

异或

 

22.CTS、CLS、CLR是什么?

图示VB.Net、C#.net、CTS、CLS、CLR之间的关系?

CTS:

CommonTypeSystem公共类型系统

CLS:

CommonLanguageSpecification公共语言规范

CLR:

CommonLanguageRuntime公共语言运行库

跨语言开发:

CTS;C#.NET,C++,VB等语言遵循CLS,---CTS---CLR

23.c#中property与attribute的区别,他们各有什么用处,这种机制的好处在哪里?

Property:

类中的一种成员,如:

方法,索引器,一般格式:

publicstringName{get{returnthis._name;}set{this._name=value}

Attribute:

(本身是一个类)一种解释说明,用来解释如何编译源代码,一般用[……]包含起来

用处:

property:

私有成员的读写;(与索引是同一类东西)避免私有成员的直接暴露。

Attribute:

加入注解和说明

24.TCP、UDP的异同?

TCP:

面向连接的,可靠的,传输控制协议,速度慢

UDP:

非面向连接的,不可靠的,用户数据包协议,速度快

25.怎样把array复制到arraylist中?

Int[]arr=newInt[]{1,0,2,3,4,5,6};

ArrayListlist=newArrayList(arr);

26.将数组a1中从第6个成员起10个数据成员拷贝到数组a2中

Array.Copy(a1,6,a2,0,10);

Array.Sort(a1);升序排序

Array.Reverse(a1);倒序排序

27.string和strbuilder的区别,为什么要写这两个类?

String:

定长的常量字符串。

Strings=“abc”;

Stringbuilder:

可变字符串

S1=”hello”;

S2=”World”;

S1+=s2;

StringBuilderbuilder=newStringBUlder(s1);

Builder.Append(s2);

内部字符数组:

默认为十六个字符

28.什么是程序集?

强命名?

GAC?

程序集:

面向.NETFramework已经编译好的可独立发布最小逻辑单元,

强命名:

strongName标识程序集,加强了的名字,名字+公钥(ID)+版本+文化

GAC:

全局程序集缓存GlobalAssemblyCache,本质上是一个文件夹assembly

29.接口有几种实现模式?

请解释接口的显式实现有什么意义?

实现模式:

显示,隐式;实现方法时,前面加上接口的名字,即为显示实现模式,反之,为隐式实现模式

意义:

一个类继承多个接口的时候,签名相同的方法需要实现时,必须使用显示实现模式,以区别于不同的接口

30.请列出c#中几种循环的方法,并指出他们的不同

For:

带有索引的集合,用For循环

Foreach:

使用范围广,当一个集合实现IEnumerator接口或者GetEnumerator()方法时,可以用该循环方法,

Foreach(Objectoinlist)其中o为只读的。

While:

Do……while:

至少执行一次

31..通过超连接怎样传递中文参数?

HyperLinklink=newHyperLink();

1.Link.NavgatorUrl=string.Format(“~/Default.aspx?

Name={0}”,HttpContext.Current.Server.UrlEncode("中文名称"));

2.HttpUtility.UrlEncoding();

32.请编程遍历页面上的所有textbox控件并给它赋值为string.empty?

Foreach(System.web.UI.WebControlcontrolin

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

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

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

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