美文网首页
C#学习笔记三

C#学习笔记三

作者: 知交 | 来源:发表于2018-10-11 10:23 被阅读12次

    静态函数中访问的成员必须是静态成员。

    1.C#访问修饰符

    1. public :公开的
    2. private:私有的,只能在当前类的内部访问
    3. protected:受保护的,只能在当前类的内部以及该类的子类中访问。
    4. internal :只能在当前程序集(项目)中访问,在同一个项目中,internal和public的权限是一样的
    5. internal protected

    简单工厂设计模式

    1.核心就是用抽象类方法写出多态

    序列化和反序列化

    目的: 将一个复杂的对象转换流,方便我们的存储与信息交换。

    Serializable

    1. 序列化类对象,先将类标记为可被序列化 类前面加 [Serializable]

           //要将p这个对象 传输给对方电脑
           Person p = new Person();
           p.Name = "张三";
           p.Gender = '男';
           p.Age = 20;
      
           using (FileStream fsWrite = new FileStream(@"C:\Users\xuzheng\Desktop\111.txt", FileMode.OpenOrCreate, FileAccess.Write))
           {
               //star serializable
               BinaryFormatter bf = new BinaryFormatter();
               bf.Serialize(fsWrite, p);
           }
           Console.WriteLine("序列化成功");
           Console.ReadKey();
      
       //接收对方发过来的二进制 反序列化成对象
           Person p;
           using (FileStream fsRead = new FileStream(@"C:\Users\xuzheng\Desktop\111.txt",FileMode.Open,FileAccess.Read))
           {
               BinaryFormatter bf = new BinaryFormatter();
               p = (Person)bf.Deserialize(fsRead);
      
               Console.WriteLine(p.Name);
               Console.WriteLine(p.Gender);
               Console.WriteLine(p.Age);
               Console.ReadKey();
           }
      

    MD5加密

    public static string GetMD5(string str)
        {
            MD5 md5 = MD5.Create();
            //开始加密
            byte[] buffer = Encoding.Default.GetBytes(str);
            byte[] MD5Buffer = md5.ComputeHash(buffer);
    
            string str2 = "";
            for (int i = 0; i < MD5Buffer.Length;i++)
            {
                str2 += MD5Buffer[i].ToString("x2");
            }
    
            return str2;
        }
    

    Process(处理) 进程处理

    //获得等钱程序中所有正在运行的进程
    Process[] pros = Process.GetProcesses();
    //通过进程打开一些应用程序
    Process.Start("calc");
    Process.Start("iexplore","http://www.baidu.com");
    
    //通过一个进程打开指定的文件
    ProcessStartInfo psi = new ProcessStartInfo(@"C:\Users\t.txt");
    Process p = new Process();
    p.StartInfo = psi;
    p.Start();
    

    线程 Thread

    //创建一个线程并执行Test方法
    Thread thr = new Thread(Test);
    //变成后台线程
    thr.IsBackground = true;
    //线程可以执行了
    thr.Start();
    
    //结束线程 
    thr.Abort();
    
    1. .Net 不允许跨线程执行

       //取消跨线程访问检查
       Control.CheckForIllegalCrossThreadCalls = false;
      
    2. 前台线程:只有所有的前台线程都关闭才能完成程序关闭。

    3. 后台线程:只要所有的前台线程结束,后台线程自动结束。

    struct 结构和类的异同

    定义:struct 结构体:1.值类型. 2.可以写字段和属性 3.可以写方法

    结构和类的区别

    1. 在类中,构造函数里,既可以给字段赋值也可以给属性赋值,但是在结构的构造函数中,必须只能给字段赋值。

    2. 在结构的构造函数中,需要给全部的字段赋值,而不能选择的给字段赋值

    3. 结构和类的构造函数:

      1> 相同点:

       不管是结构还是类,本身都会有一个默认的无参数的构造函数。
      

      2> 不同点:

       1. 当在类中写了一个新的构造函数后,默认的无参构造函数就被干掉了。
      
       2. 在结构中,如果新写了一个构造函数,默认的无参构造函数依然在。
      
    4. 如果只是单纯的存储数据,推荐使用结构.

      如果使用面向对象的思想开发,使用class

    单例

    1. 将构造函数设置为private

    2. 创建一个返回static函数返回对象本身

    3. 创建一个单例。

       public class Person
       {
           //全局的唯一单例
           public static Person PersonSingle = null;
      
           //1..将构造函数私有化 public 转为 private
           private Person()
           {
      
           }
      
           //2.创建一个static 方法返回Person对象
           public static Person GetSingle()
           {
               if(PersonSingle == null)
               {
                   PersonSingle = new Person();
               }
            return PersonSingle;
           }
       }
      

    委托 匿名函数 lamda表达式

    namespace _06_匿名函数
    {
        //委托
        public delegate void DelSayHi(string name);
    
        class Program
        {
            static void Main(string[] args)
            {
             //匿名函数
             DelSayHi del = delegate (string name)
                {
                    Console.WriteLine("你好" + name);
                };
    
                del("张三"); //打印:你好张三
                Console.ReadKey();
            
    
                //lamda表达式
                DelSayHi ddel = (string name) => { Console.WriteLine(name); };
                ddel("张三");//打印:张三
    
            }
    
    
        }
    }
    

    相关文章

      网友评论

          本文标题:C#学习笔记三

          本文链接:https://www.haomeiwen.com/subject/crnvaftx.html