级C#复习.docx

上传人:b****5 文档编号:5852719 上传时间:2023-01-01 格式:DOCX 页数:15 大小:22.26KB
下载 相关 举报
级C#复习.docx_第1页
第1页 / 共15页
级C#复习.docx_第2页
第2页 / 共15页
级C#复习.docx_第3页
第3页 / 共15页
级C#复习.docx_第4页
第4页 / 共15页
级C#复习.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

级C#复习.docx

《级C#复习.docx》由会员分享,可在线阅读,更多相关《级C#复习.docx(15页珍藏版)》请在冰豆网上搜索。

级C#复习.docx

级C#复习

1、.NETFramework中的MSIL、CLR和JIT分别是什么?

CLR是否有自动内存管理能力?

P1

MSIL:

中间代码CIR:

C#语言公共语言代码运行的一种运行环境,与java语言的虚拟机相似JIT:

在CIR中将公共语言编译成CPU可执行的机器码的一种即时编译器

2、C#中WriteLine()方法中的参数格式。

P4例

Console.WriteLine(“姓名:

{0},年龄:

{1}”,name,age);

3、字符串(string类)的定义、比较、搜索、判断为空、获得字串、字符串删除、删除所有空格、字符串插入、字符串替换等方法。

P12-14

定义:

StringLastName;

LastName=”Ming”;

StringFirstName=”Zhang”;

StringName=FirstName+””+LastName;

StringSameName=Name;

Char[]s2={‘计’,’算’,’机’,’科’,’学’};

Strings3=newString(s2);

搜索:

Strings=”ABC科学”;

Inti=s.IntdexOf(“科”);//i指的是搜索到的位置,未搜索到i=-1

比较:

Strings1=”abc”;

Strings2=”bcd”;

Intn=string.Compare(s1,s2);

if(n==0)

{

Console.WritelLine(“字符串相同”);

}elseif(n<0)

{

Console.WritelLine(“s1

}else

{

Console.WritelLine(“s1>s2”);

}

判断字符串是否为空:

If(s1.Length==0)

{

Console.WritelLine(“s1为空”);

}

得到子字符串或字符:

Strings2=s1.SubString(2,2);//从第二个字符开始取2个字符,s2=”cd”

Chars3=s1[0];//s3=”a”

字符串删除函数:

Stringsc=s1.Remove(1,2);//从第一个字符开始删除后2个字符,sc=”a”

插入字符串函数:

Strings1=s2.Insert(3,”软件”);//在s2中第三个字符后面插入“软件”,s1=”bcd软件”

字符串替换函数:

Strings1=s2.Replace(“bcd”,”软件”);//s1=”软件”

字符串转换为字符数组:

Strings=”计算机科学”;

Char[]s1=s.ToCharArray(0,s.Length);

其他数据类型转为字符串:

Inti=9;

Strings8=i.ToString();//s8=”9”

Folatn=1.9f;

Strings9=n.ToString();//s9=”1.9”

大小写转换:

Strings=”ABCDefg”;

Strings1=s.ToLower();//把字符转为小写,s1=”abcdefg”

Strings2=s.ToUpper();//把字符转为大写,s2=”ABCDEFG”

删除所有空格:

Strings=”Abc”;

s.Trim();

4、foreach语句的使用;P19

Foreach(类型变量名in表达式)循环语句

UsingSystem;

ClassTest

{

PublicstaticvoidMain()

{

Int[]I=(10,20,30,40);

Foreach(intminI)//变量m在I数组中从第1个字符开始循环到最后一个字符结束

Console.WriteLine(“{0}”,m);

}

}

5、使用Convert类和parse方法进行类型转换;

Strings=”123456789”;

Ints1=ConvertToInt32(s);

Inta=int.parse(s);

 

6、属性是如何在类中使用的?

和类的成员方法相比有什么异同?

P24-25

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Linq;

usingSystem.Text;

namespaceConsoleApplication1

{

publicclassProgram

{

privatestringP_name="张三";

privateintP_age=12;

publicvoidDispaly()

{

Console.WriteLine("姓名:

{0},年龄:

{1}",P_name,P_age);

}

publicstringName

{

get{returnP_name;}

set{P_name=value;}

}

publicintAge

{

get{returnP_age;}

set{P_age=value;}

}

}

publicclassTest

{

publicstaticvoidMain()

{

ProgramOneProgram=newProgram();

OneProgram.Name="田七";

//value=“田七”通过set方法修改变量P_name

strings=OneProgram.Name;

//通过get方法得到变量P_name的值

intx=OneProgram.Age;

//通过get方法得到变量P_age的值

OneProgram.Dispaly();

//调用Dispaly方法显示

}

}

}

 

7、数据库应用程序设计的两种方式:

连接方式和不连接方式。

连接方式的设计步骤(P186),不连接方式的设计步骤(P185-186)

设计一个连接方式数据库应用程序一般包括以下基本步骤:

a)建立数据库,包括若干个表,在表中添入数据(若干记录)。

b)用SqlConnection类建立数据库应用程序和数据库连接对象。

c)使用SQLCommand类对象用SQL语句来访问数据库中的数据,直接在数据库的表中查询指定记录、增加记录、删除记录,修改记录中的数据。

使用ADO.Net设计一个不连接方式数据库应用程序一般包括以下基本步骤:

a)创建数据库,包括若干个表,在表中添入数据。

b)用SqlConnection类建立数据库应用程序和数据库连接对象。

c)用SqlDataAdapter类对象从数据库指定表中取出感兴趣的记录。

d)从数据库指定表中取出的感兴趣记录做成一个新表,填充到DataSet类对象中,可填充多个表,并可在DataSet类对象中指定表和表的关系。

DataSet对象建立在内存中,可以认为是数据库在内存中的一个子集。

取出所有感兴趣的数据后,断开和数据库的连接。

e)将DataSet类对象中的数据作为数据源,用支持数据绑定的控件(如ListView、TextBox等控件)的属性绑定到DataSet数据源中的表或表的字段,供用户浏览、查询、修改。

f)及时更新DataSet中的内容,并把修改的数据存回源数据库。

8、连接方式设计数据库应用程序时,需建立SqlConnection对象和SqlCommand对象。

SqlCommand对象的执行方法有ExecuteReader(执行Select语句,配合SqlDataReader来保存选择的记录,完毕后SqlDataReader需要手动调用close()方法关闭)、ExecuteNonQuery(执行Insert、Update、Delete语句)和ExecuteScalar(执行统计类的SQL语句,例如count等)。

连接方式设计数据库应用程序需要手动调用SqlConnection对象的Open()和Close()方法来打开/关闭数据库连接。

9、完毕后SqlDataReader对象保存SQL选择语句返回记录中的第一条记录前一个位置,通过调用该实例的Read方法来使指针逐条记录下移。

10、不连接方式设计数据库应用程序时,数据库分为三层(远端服务器的数据库源、本地内容中的内存数据库DataSet/DataTable、客户端显示插件DataGridView等)。

组件SqlDataAdapter负责远端数据库和内存数据库之间的通讯,其隐藏了SelectCommand等命令,自动完成数据库的连接于关闭,调用其Fill和Update方法完成内存数据库和远端数据库的数据传输。

BindingSource负责内存数据库和DataGridView之间的数据同步;

11、C#中参数传递的两种方法:

值参数(不含任何修饰符)、引用参数(前+ref修饰);P26

方法的声明格式:

方法修饰符返回类型方法名(形参列表){方法体}

Publicstaticvoidname()

{Console.WriteLine(“田七”);

}

方法修饰符包括:

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

参数传递--参数值(不含任何修饰符)

PublicstaticvoidF2(chari)

{i=”d”;}

参数传递--引用参数(前+ref修饰)

PubilcstaticvoidF1(refchari)

{i=”b”;}

StaticvoidMain(string[]args)

{

Chara=”c”;

F2(a);//值参数,不能改变外部的a的值

Console.WriteLine(a);//a未被修改,显示c

F1(refa);//引用参数,函数修改外部的a的值

Console.WriteLine(a);//a被修改为b,显示b

}

12、C#中可以使用Lock、Mutex和Monitor来实现线程之间的互斥;

用C#语句Lock实现互斥

ObjectthreadLock=newObject;//在window1类中定义变量

publicvoidFun1()

{

intk,n;

for(k=0;k<4;k++)

{//lock(this)//这里的this是window1类的对象

lock(threadLock)//具有同一对象(本例为threadLock)的代码区是临界值

{//这对大括号中的代码为threadLock的临界区

n=num;//该临界区包括两个部分,函数Fun1和Fun2中的临界区

n++;

Thread.Sleep(10);

num=n;

}

Thread.Sleep(50);

}

}//退出该方法,线程结束

publicvoidFun2()

{

intk,n;

for(k=0;k<4;k++)

{//lock(this)//如有线程进入此临界区,其他线程就不能进入此临界区

lock(threadLock)//如果有多个共享数据区,此方法使用比较好

{//也不能进入前面的临界区

n=num;

n++;

Thread.Sleep(10);

num=n;

}

Thread.Sleep(100);

}

}

用C#语句Mutex实现互斥

publicvoidFun1()

{

intk,n;

for(k=0;k<4;k++)

{

mut.WaitOne();//等候互斥体访问权

n=num;//mun.WaitOne()和mun.ReleaseMutex()之间是互斥体

n++;//Mutex类对象mut的互斥体包含两部分,函数Fun1和Fun2中互斥体

Thread.Sleep(10);//有线程进入互斥体,其他线程不能进入任何一个互斥体

num=n;

mun.ReleaseMutex()//释放互斥体访问权

Thread.Sleep(50);

}

}//退出该方法,线程结束

publicvoidFun2()

{

intk,n;

for(k=0;k<4;k++)

{

mut.WaitOne();

n=num;

n++;

Thread.Sleep(10);

num=n;

mun.ReleaseMutex()

Thread.Sleep(100);

}

}

13、C#中的数据类型:

简单类型P9,一个字符占2个字节,数组类型P11-12(一维数组、二维数组、交错数组的定义和使用,Count、Capacity、Length等属性);

数组定义:

Int[]arr;

Int[,]arr;

14、线程的创建方法是?

P187-189(注意有参数和没参数两种形式);

Publicvoidfun1()//定义一个在线程中执行的方法

{Thread.Sleep(500);//模拟费时计算

intx=2,y=3,z;

z=x+y;//退出该方法,线程结束

}

Threadthread=newThread(newThreadStart(fun1));//创建线程无参

thread.Start();//启动线程

Threadthread1=newThread(newParameterizedThreadStart(fun2));//有参

15、RichTextBox和TextBox相比,可以完成复杂文字处理功能与Word相似;

 

16、C#2.0中不允许在函数中直接修改线程外控件属性;

使用控件Invoke方法修改外控件属性

 

17、和基于TCP的Socket编程相比,基于UDP的Socket编程的优点和缺点是什么?

P218

基于UDP编程:

优点:

无连接(速度快)、可用于广播(组播)、消耗网络宽带小

缺点:

不可靠、安全性差、不保证报文顺序交付

 

18、(类的定义和使用)定义Book类,包括私有成员变量表示书的书名、ISBN、作者、价格、馆藏数量,增加有参数和无参数的构造函数,定义显示书记五项信息的显示的方法,定义修改馆藏数量的方法,定义修改书名的方法,定义修改价格的方法(或者用属性来修改这些信息)。

在主函数中生成Book类对象,调用Book类方法来修改和显示馆藏数量、书名和价格等信息。

参考P241.9.2Person类的例子。

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Linq;

usingSystem.Text;

namespaceConsoleApplication2

{

publicclassbook

{

privatestringbookName,ISBN,zuoZhe;

privateintshuLiang,jiaGe;

publicvoidDispaly()

{

Console.WriteLine("书名:

{0}",bookName);

Console.WriteLine("ISBN:

{0}",ISBN);

Console.WriteLine("作者:

{0}",zuoZhe);

Console.WriteLine("数量:

{0}",shuLiang);

Console.WriteLine("价格:

{0}",jiaGe);

}

publicstringbName

{

set{bookName=value;}

get{returnbookName;}

}

publicstringiBNS

{

set{ISBN=value;}

get{returnISBN;}

}

publicstringZuoZhe

{

set{zuoZhe=value;}

get{returnzuoZhe;}

}

publicintShuLiang

{

set{shuLiang=value;}

get{returnshuLiang;}

}

publicintJiaGe

{

set{jiaGe=value;}

get{returnjiaGe;}

}

}

publicclassProgram

{

staticvoidMain(string[]args)

{

bookbook1=newbook();

Console.WriteLine("请输入书名:

");

book1.bName=Console.ReadLine();

stringname=book1.bName;

Console.WriteLine("请输入IBNS:

");

book1.iBNS=Console.ReadLine();

stringibns=book1.iBNS;;

Console.WriteLine("请输入作者:

");

book1.ZuoZhe=Console.ReadLine();

stringzuozhe=book1.ZuoZhe;

Console.WriteLine("请输入价格:

");

book1.JiaGe=Convert.ToInt32(Console.ReadLine());

intjiagge=book1.JiaGe;

Console.WriteLine("请输入数量:

");

book1.ShuLiang=Convert.ToInt32(Console.ReadLine());

intshuliang=book1.ShuLiang;

Console.WriteLine("书籍的基本信息:

");

book1.Dispaly();

Console.ReadLine();

}

}

}

19、(文件和流)实现将某一特定目录(例如C:

\ProgramFiles)下的所有的文件夹在TreeView结构和ListView结构中显示(参考资源管理器实验);

UsingSystem.IO;//使用文件必须引用命名空间

//获取某路径中的目录信息:

stringPath=某路径字符串;

DirectoryInfoMyFolders=newDirectoryInfo(Path);

DirectoryInfo[]folders=MyFolders.GetDirectories();

foreach(DirectoryInfofolderinfolders)

{

TreeNodet=newTreeNode(folder.Name,2,2);

treeview1.Nodes.Add(t);

}

//添加文件项目到listview

DirectoryInfofolder=newDirectoryInfo(Path);

DirectoryInfo[]difs=folder.GetDirectories();

foreach(DirectoryInfodifindifs)

{

ListViewItemitem2=newListViewItem(dif.Name,2);

listView1.Items.Add(item2);

}

20、(WPF编程布局)用WPF实现菜单的编写以及布局。

(参照第4章课件P4-6)

 

21、(ADO.NET编程)实现本地数据库的连接(连接方式和不连接方式均可,建议选择连接方式),能够进行数据库的查询、注册、登录、修改、删除等操作。

(最后两次数据库实验)。

Publicstaticvoiddenglu

{

stringconnstring="DataSource=localhost;InitialCatalog=test;

IntegratedSecurity=true";

//stringSqlStr="Select*fromstuwhereusername='"+UserName.Text+”andpassword=”+PassWord.password;

if(UserName.Text==""||PassWord.Password=="")//登录

{

MessageBox.Show("账号密码不能为空");

Return();}else{

stringu=UserName.Text;

stringp=PassWord.Password;

SqlConnectiona=newSqlConnection(connstring);

a.Open();

SqlCommandb=newSqlCommand("selcet*formstuwhereusername="+u+"andpassword="+p,a);

b.ExecuteNonQuery();

stringu2=b.ExecuteScalar().ToString();

if(u2==u)

{

MessageBox.Show(“登录成功”);

}

else

{

MessageBox.Show(“登陆失败!

”);

}

a.Close();

}}

//插入一条记录(注册)Insert

Publicstaticvoidzhuce{

stringconnstring

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

当前位置:首页 > 高等教育 > 艺术

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

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