c# 扩展方法奇思妙用变态篇四:string 的翻身革命
2013-06-09 13:42
274 查看
string是各种编程语言中最基础的数据类型,长期以来受尽其它类的压迫,经常被肢解(Substring、Split)、蹂躏(Join)...
而现在string要“翻身闹革命”了,它几乎无所不能,可以为所欲为,令其它类心惊胆颤...
让我们来看一下革命后的string做了些什么?
2 "http://www.cnblogs.com/ldp615/".Open();
怎么做到的呢?看扩展,很简单,直接调用调用了Process.Start函数:
1 public static void Open(this string s)
2 {
3 Process.Start(s);
4 }
单单打开个文件,窃取他人信息只是初步操作,string还可以修改、删除、创建文件(或目录)
2 @"C:\Directory\readme.txt".WriteText("this file is created by string!");
3 @"C:\abc.txt".DeleteFile();
实现同样简单,调用File及Directory类。以下上面三个扩展的实现。(当然还可以实现更多文件及目录操作,很简单,不再给出!)
2 int count = "select count(*) from Girlfriends".ExecuteScalar(conn).Cast<int>();
参考实现如下:
1 public static object ExecuteScalar(this string sql, DbConnection conn)
2 {
3 object result;
4 using (DbCommand cmd = conn.CreateCommand())
5 {
6 cmd.Connection = conn;
7 cmd.CommandText = sql;
8 cmd.CommandType = System.Data.CommandType.Text;
9 conn.Open();
10 result = cmd.ExecuteScalar();
11 conn.Close();
12 }
13 return result;
14 }
还有Cast扩展:
1 public static T Cast<T>(this object obj)
2 {
3 return (T)obj;
4 }
现在可以执行了。结果是*** 同样还可以实现更多数据库操作。
(改)变(形)态篇 文章,仅供开拓思路,实际项目慎用!
而现在string要“翻身闹革命”了,它几乎无所不能,可以为所欲为,令其它类心惊胆颤...
让我们来看一下革命后的string做了些什么?
打开文件或网址
1 "c:\\t.txt".Open();2 "http://www.cnblogs.com/ldp615/".Open();
怎么做到的呢?看扩展,很简单,直接调用调用了Process.Start函数:
1 public static void Open(this string s)
2 {
3 Process.Start(s);
4 }
单单打开个文件,窃取他人信息只是初步操作,string还可以修改、删除、创建文件(或目录)
文件及目录操作
1 @"C:\Directory".CreateDirectory();2 @"C:\Directory\readme.txt".WriteText("this file is created by string!");
3 @"C:\abc.txt".DeleteFile();
实现同样简单,调用File及Directory类。以下上面三个扩展的实现。(当然还可以实现更多文件及目录操作,很简单,不再给出!)
2 int count = "select count(*) from Girlfriends".ExecuteScalar(conn).Cast<int>();
参考实现如下:
1 public static object ExecuteScalar(this string sql, DbConnection conn)
2 {
3 object result;
4 using (DbCommand cmd = conn.CreateCommand())
5 {
6 cmd.Connection = conn;
7 cmd.CommandText = sql;
8 cmd.CommandType = System.Data.CommandType.Text;
9 conn.Open();
10 result = cmd.ExecuteScalar();
11 conn.Close();
12 }
13 return result;
14 }
还有Cast扩展:
1 public static T Cast<T>(this object obj)
2 {
3 return (T)obj;
4 }
现在可以执行了。结果是*** 同样还可以实现更多数据库操作。
总结
string还可以做更多更多事情,只要你支持它!但不要给它太多太大的权力,万一哪天比你强大了...(改)变(形)态篇 文章,仅供开拓思路,实际项目慎用!
相关文章推荐
- 艾伟_转载:c#扩展方法奇思妙用变态篇四:string 的翻身革命
- c#扩展方法奇思妙用变态篇四:string 的翻身革命
- c#扩展方法奇思妙用变态篇四:string 的翻身革命
- c# 扩展方法奇思妙用变态篇四:string 的翻身革命
- c#扩展方法奇思妙用基础篇二:string 常用扩展
- c# 扩展方法奇思妙用基础篇二:string 常用扩展
- c#扩展方法奇思妙用变态篇一:由Fibonacci数列引出“委托扩展”及“递推递归委托”
- c# 扩展方法 奇思妙用 高级篇 九:OrderBy(string propertyName, bool desc)
- c# 扩展方法奇思妙用变态篇一:由 Fibonacci 数列引出 “委托扩展” 及 “递推递归委托”
- c#扩展方法奇思妙用基础篇二:string 常用扩展
- c# 扩展方法奇思妙用基础:string 常用扩展
- c#扩展方法奇思妙用高级篇五:ToString(string format) 扩展
- c# 扩展方法奇思妙用变态篇一:由 Fibonacci 数列引出 “委托扩展” 及 “递推递归委托”
- c# 扩展方法奇思妙用高级篇五:ToString(string format) 扩展
- c# 扩展方法 奇思妙用 高级篇 九:OrderBy(string propertyName, bool desc)
- c#扩展方法奇思妙用变态篇三:switch/case组扩展
- c#扩展方法奇思妙用变态篇一:由Fibonacci数列引出“委托扩展”及“递推递归委托”
- c# 扩展方法奇思妙用变态篇一:由 Fibonacci 数列引出 “委托扩展” 及 “递推递归委托”
- c# 扩展方法奇思妙用基础篇二:string 常用扩展
- c#扩展方法奇思妙用高级篇五:ToString(string format) 扩展