• C#数据类型-string


    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
    eadme.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;  
    }
    现在可以执行了。结果是***  同样还可以实现更多数据库操作。
  • 相关阅读:
    【2019-08-03】自卑和悲观是有区别的
    你现在不用写代码了吧?
    【2019-08-02】信任是一种能力
    【2019-08-01】给孩子一个渴望长大的榜样
    【一句日历】2019年8月
    【2019-07-31】一切皆有寓意
    【2019-07-30】原来努力会上瘾
    【2019-07-29】睡多了,会被宰的
    【2019-07-28】活到老,学到老
    【2019-07-27】习惯的力量很强大
  • 原文地址:https://www.cnblogs.com/dinotang/p/3272334.html
Copyright © 2020-2023  润新知