C#数据类型-string_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > C#数据类型-string

C#数据类型-string

 2013/8/21 12:49:06  Dino.Tang  博客园  我要评论(0)
  • 摘要:string是各种编程语言中最基础的数据类型,长期以来受尽其它类的压迫,经常被肢解(Substring、Split)、蹂躏(Join)...而现在C#数据类型string要“翻身闹革命”了,它几乎无所不能,可以为所欲为,令其它类心惊胆颤...让我们来看一下革命后的string做了些什么?1.打开文件或网址"c:\\t.txt".Open();"http://www.cnblogs.com/ldp615/".Open();怎么做到的呢?看扩展,很简单
  • 标签:C# 数据类型 数据

string是各种编程语言中最基础的数据类型,长期以来受尽其它类的压迫,经常被肢解(Substring、Split)、蹂躏(Join)...

而现在C#数据类型string要“翻身闹革命”了,它几乎无所不能,可以为所欲为,令其它类心惊胆颤...

让我们来看一下革命后的string做了些什么?

1. 打开文件或网址

"c:\\t.txt".Open();  
"http://www.cnblogs.com/ldp615/".Open(); 

怎么做到的呢?看扩展,很简单,直接调用调用了Process.Start函数:

public static void Open(this string s) 
{ 
  Process.Start(s); 
}

单单打开个文件,窃取他人信息只是初步操作,string还可以修改、删除、创建文件(或目录)

2. 文件及目录操作

@"C:\Directory".CreateDirectory();  
@"C:\Directory\readme.txt".WriteText("this file is created by string!");  
@"C:\abc.txt".DeleteFile(); 

实现同样简单,调用File及Directory类。以下上面三个扩展的实现。(当然还可以实现更多文件及目录操作,很简单,不再给出!)

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. 执行DOS命令,先看两个简单的

string output1 = "del c:\\t1.txt".ExecuteDOS();
string output2 = "dir".ExecuteDOS();

实现也用了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命令也会有异常发生,下面的实现可通过out参数返回错误信息:

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();

以上对付一般用户的电脑足够了,可但对程序员的电脑,他们居然把信息放进了数据库!同样有办法!

4. 执行SQL

DbConnection conn = int count = "select count(*) from Girlfriends".ExecuteScalar(conn).Cast< int>();

参考实现如下:

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;  
}
现在可以执行了。结果是***  同样还可以实现更多数据库操作。
上一篇: WPF中的文字修饰 下一篇: 没有下一篇了!
发表评论
用户名: 匿名