String转Enum类型
//使用Enum的静态方法 Parse(枚举类型,要转换的字符串) UIPanelType type = (UIPanelType) Enum.Parse (typeof(UIPanelType), panelTypeString);
Enum转String
/使用Enum的静态方法GetName(枚举类型,要转换的枚举) string name = Enum.GetName (typeof(UIPanelType), UIPanelType.shopPanel); string name2 = UIPanelType.bagPanel.ToString ();
Enum类实在System命名空间下的
string filePath = "装备信息.xls";//XML文件
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties='Excel 8.0;HDR=False;IMEX=1'";//链接字符串固定
OleDbConnection connection = new OleDbConnection(strConn);//创建链接
connection.Open();//链接
string sql = "select * from [Sheet1$]";//sql语句
OleDbDataAdapter adapter = new OleDbDataAdapter(sql, connection);//去指定链接中查询sql语句,用来查询的类
DataSet data = new DataSet();//用来存储数据的类,在System.Data空间中
adapter.Fill(data);//将查询到的数据填充到DataSet里
connection.Close();//关闭链接
DataTable table = data.Tables[0];//获取第一个表的数据
DataRowCollection rowCollection = table.Rows;//获取这个表的所有行数据
foreach (DataRow row in rowCollection) {//遍历每一行
for (int i = 0; i < 8; i++) {
Console.Write(row[i]+" ");//通过索引访问列值
}
Console.WriteLine();
Console.WriteLine(row["描述"]);//通过字段名访问
}OleDb相关的类在System.Data.OleDb命名空间下
其他相关存储数据的在System.Data命名空间下,DataSet,DataTable,DataRowCollection,DataRow等
{
"employees": [
{ "firstName":"Bill" , "lastName":"Gates" },
{ "firstName":"George" , "lastName":"Bush" },
{ "firstName":"Thomas" , "lastName":"Carter" }
]
}花括号表示对象,方括号表示数组
键值对中 "键":value
<note time="1997-12-11"> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note>
这里没有 <?xml version="1.0" encoding="UTF-8"?>
也可以被C#解析出来,有xml的时候,它就是第一个节点
File.WriteAllText("文件路径","我是写入的数据");
File.WriteAllLines("文件路径",字符串数组);//每一个数组运元素写成一行
File.WriteAllBytes("文件路径",byte数组);
DirectoryInfo directoryInfo = new DirectoryInfo(@"D:\vs project\Study\Study3\bin\Debug\chicai");
Console.WriteLine(directoryInfo.Exists);//文件夹是否存在
Console.WriteLine(directoryInfo.Name);//文件名称
Console.WriteLine(directoryInfo.Parent);//文件夹的上级目录
Console.WriteLine(directoryInfo.Root);//文件夹的根目录
directoryInfo.CreateSubdirectory("chifan");//创建子文件夹
DirectoryInfo dir = new DirectoryInfo("cc");
if (!dir.Exists) {
dir.Create();//创建文件夹
}同样的在System.IO命名空间下
FileInfo类在命名空间System.IO下
FileInfo fileInfo = new FileInfo("1.txt");
Console.WriteLine(fileInfo.Name);//文件名称
Console.WriteLine(fileInfo.FullName);//文件完整的路径
fileInfo.CopyTo("2.txt");//复制到指定路径文件
fileInfo.MoveTo("3.txt");//移动文件到指定位置和修改名称
FileInfo file = new FileInfo("6.txt");
if (!file.Exists) {//判断文件是否存在
file.Create();//创建这个文件
}基于连接和无连接
TCP对系统资源的要求高
UDP程序结构较简单
流模式与数据报模式
TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证
if (socket.Connected) {
if (socket.Poll(1, SelectMode.SelectRead))
{
socket.Close();
break;
}
try
{
int length = socket.Receive(data);
string mes = Encoding.UTF8.GetString(data, 0, length);
ClientManager.GetInstance().BroadcastMessage(mes);
Console.WriteLine(mes);
}
catch (Exception e) {
Console.WriteLine("断开链接");
}
}socket.Connected 表示获取上次连接的状态
假如现在有那么两个对象a和b
线程1 先lock(a) 再 lock(b)
线程2 先lock(b) 再 lock(a)
那么,有可能会发生,线程1和2都运行到第一个锁,也就是说线程1锁住了a,线程2锁住了b
再往下执行,线程1想要锁住b,但是被线程2锁了,等待
线程2想要锁住a,但是被线程1锁了,等待
线程1和线程2互相等待对方锁定的资源释放锁
此时就会产生死锁