新聞中心
string是各種編程語言中最基礎的數(shù)據(jù)類型,長期以來受盡其它類的壓迫,經(jīng)常被肢解(Substring、Split)、蹂躪(Join)...

驛城網(wǎng)站建設公司創(chuàng)新互聯(lián),驛城網(wǎng)站設計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為驛城超過千家提供企業(yè)網(wǎng)站建設服務。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設要多少錢,請找那個售后服務好的驛城做網(wǎng)站的公司定做!
而現(xiàn)在C#數(shù)據(jù)類型string要“翻身鬧革命”了,它幾乎無所不能,可以為所欲為,令其它類心驚膽顫...
讓我們來看一下革命后的string做了些什么?
1. 打開文件或網(wǎng)址
- "c:\\t.txt".Open();
- "http://www.cnblogs.com/ldp615/".Open();
怎么做到的呢?看擴展,很簡單,直接調(diào)用調(diào)用了Process.Start函數(shù):
- public static void Open(this string s)
- {
- Process.Start(s);
- }
單單打開個文件,竊取他人信息只是初步操作,string還可以修改、刪除、創(chuàng)建文件(或目錄)
2. 文件及目錄操作
- @"C:\Directory".CreateDirectory();
- @"C:\Directory\readme.txt".WriteText("this file is created by string!");
- @"C:\abc.txt".DeleteFile();
實現(xiàn)同樣簡單,調(diào)用File及Directory類。以下上面三個擴展的實現(xiàn)。(當然還可以實現(xiàn)更多文件及目錄操作,很簡單,不再給出?。?nbsp;
- public static void CreateDirectory(this string path)
- {
- Directory.CreateDirectory(path);
- }
- public static void WriteText(this string path, string contents)
- {
- File.WriteAllText(path, contents);
- }
- public static void DeleteFile(this string path)
- {
- if(File.Exists(path)) File.Delete(path);
- }
還是感覺不過癮,想要刪除整個硬盤的文件,用上面的一個一個來也太麻煩了。也沒問題,看下面:
3. 執(zhí)行DOS命令,先看兩個簡單的
- string output1 = "del c:\\t1.txt".ExecuteDOS();
- string output2 = "dir".ExecuteDOS();
實現(xiàn)也用了Process類,如下:
- public static string ExecuteDOS(this string cmd)
- {
- Process process = new Process();
- process.StartInfo.FileName = "cmd.exe";
- process.StartInfo.UseShellExecute = false;
- process.StartInfo.RedirectStandardInput = true;
- process.StartInfo.RedirectStandardOutput = true;
- process.StartInfo.RedirectStandardError = true;
- process.StartInfo.CreateNoWindow = true;
- process.Start();
- process.StandardInput.WriteLine(cmd);
- process.StandardInput.WriteLine("exit");
- return process.StandardOutput.ReadToEnd();
DOS命令也會有異常發(fā)生,下面的實現(xiàn)可通過out參數(shù)返回錯誤信息:
ExecuteDOS
- public static string ExecuteDOS(this string cmd, out string error)
- {
- Process process = new Process();
- process.StartInfo.FileName = "cmd.exe";
- process.StartInfo.UseShellExecute = false;
- process.StartInfo.RedirectStandardInput = true;
- process.StartInfo.RedirectStandardOutput = true;
- process.StartInfo.RedirectStandardError = true;
- process.StartInfo.CreateNoWindow = true;
- process.Start();
- process.StandardInput.WriteLine(cmd);
- process.StandardInput.WriteLine("exit");
- error = process.StandardError.ReadToEnd();
- return process.StandardOutput.ReadToEnd();
- }
有了這個擴展,格式化硬盤、關機、重啟都不在話下!
- "format c:".ExecuteDOS();
- "shutdown -s".ExecuteDOS();
- "shutdown -r".ExecuteDOS();
以上對付一般用戶的電腦足夠了,可但對程序員的電腦,他們居然把信息放進了數(shù)據(jù)庫!同樣有辦法!
4. 執(zhí)行SQL
- DbConnection conn =
- int count = "select count(*) from Girlfriends".ExecuteScalar(conn).Cast< int>();
參考實現(xiàn)如下:
- public static object ExecuteScalar(this string sql, DbConnection conn)
- {
- object result;
- using (DbCommand cmd = conn.CreateCommand())
- {
- cmd.Connection = conn;
- cmd.CommandText = sql;
- cmd.CommandType = System.Data.CommandType.Text;
- conn.Open();
- result = cmd.ExecuteScalar();
- conn.Close();
- }
- return result;
- }
還有Cast擴展:
- public static T Cast< T>(this object obj)
- {
- return (T)obj;
- }
現(xiàn)在可以執(zhí)行了。結果是*** 同樣還可以實現(xiàn)更多數(shù)據(jù)庫操作。
C#數(shù)據(jù)類型string還可以做更多更多事情,只要你支持它!但不要給它太多太大的權力,萬一哪天比你強大了...
當前文章:學習C#數(shù)據(jù)類型:string
分享地址:http://fisionsoft.com.cn/article/cosjieo.html


咨詢
建站咨詢
