级C#复习Word格式.docx
《级C#复习Word格式.docx》由会员分享,可在线阅读,更多相关《级C#复习Word格式.docx(15页珍藏版)》请在冰豆网上搜索。
s2”);
}else
Console.WritelLine(“s1>
}
判断字符串是否为空:
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("
姓名:
{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)创建数据库,包括若干个表,在表中添入数据。
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的值
//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()
{//lock(this)//如有线程进入此临界区,其他线程就不能进入此临界区
lock(threadLock)//如果有多个共享数据区,此方法使用比较好
{//也不能进入前面的临界区
Thread.Sleep(100);
用C#语句Mutex实现互斥
mut.WaitOne();
//等候互斥体访问权
//mun.WaitOne()和mun.ReleaseMutex()之间是互斥体
//Mutex类对象mut的互斥体包含两部分,函数Fun1和Fun2中互斥体
//有线程进入互斥体,其他线程不能进入任何一个互斥体
mun.ReleaseMutex()//释放互斥体访问权
mut.WaitOne();
mun.ReleaseMutex()
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类的例子。
namespaceConsoleApplication2
publicclassbook
privatestringbookName,ISBN,zuoZhe;
privateintshuLiang,jiaGe;
书名:
{0}"
bookName);
ISBN:
ISBN);
作者:
zuoZhe);
数量:
shuLiang);
价格:
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;
staticvoidMain(string[]args)
bookbook1=newbook();
请输入书名:
"
);
book1.bName=Console.ReadLine();
stringname=book1.bName;
请输入IBNS:
book1.iBNS=Console.ReadLine();
stringibns=book1.iBNS;
请输入作者:
book1.ZuoZhe=Console.ReadLine();
stringzuozhe=book1.ZuoZhe;
请输入价格:
book1.JiaGe=Convert.ToInt32(Console.ReadLine());
intjiagge=book1.JiaGe;
请输入数量:
book1.ShuLiang=Convert.ToInt32(Console.ReadLine());
intshuliang=book1.ShuLiang;
书籍的基本信息:
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)
<
Grid>
DockPanel>
MenuMargin="
0"
DockPanel.Dock="
Top"
>
MenuItemHeader="
文件"
>
新建"
<
/MenuItem>
打开"
保存"
编辑-"
帮助"
/Menu>
RichTextBoxDockPanel.Dock="
Bottom"
/RichTextBox>
/DockPanel>
/Grid>
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