1. 程式人生 > 其它 >【C#學習記錄】八、面向物件概念4(零碎概念)

【C#學習記錄】八、面向物件概念4(零碎概念)

目錄

C#中的訪問修飾符

修飾符 作用
public 公開的公共的
private 私有的,只能在當前類的內部訪問
protected 受保護的,只能在當前類的內部以及該類的子類中訪問
internal 只能在當前專案中訪問。在用一個專案中,internal和public的許可權是一樣的。
protected internal 只能在專案內部使用,只能在當前類的內部以及該類的子類中訪問
  1. 能夠修飾
    的訪問修飾符只有兩個:public、internal
  2. 子類的訪問許可權不能高於父類的訪問許可權,會暴露父類的成員。

設計模式

23種設計模式

23種設計模式
單例模式 抽象工廠模式 工廠方法模式 建造者模式
原型模式 介面卡模式 裝飾器模式 代理模式
外觀模式 橋接模式 組合模式 享元模式
策略模式 模板方法模式 觀察者模式 迭代器模式
責任鏈模式 命令模式 備忘錄模式 狀態模式
訪問者模式 中介者模式 直譯器模式

值型別和引用型別

值型別在賦值的時候,傳遞的是這個值本身

引用型別在複製的時候,傳遞的是對這個物件的引用。

特殊:字串的不變性

ref

在傳參的時候加ref,則傳遞的是物件的地址

序列化與反序列化

序列化:將物件轉換為二進位制

反序列化:將二進位制轉換為物件

傳輸資料的時候只能傳輸二進位制,所以傳輸前需要序列化成二進位制,接收之後反序列化回來。

  1. 首先要將物件標記為序列化類

    [Serializable]
    Class Person
    {
        public Person()
        {
    
        }
    }
    
  2. 在需要序列化的地方,使用BinaryFormatter類的Serialize方法

    Person p = new Person();
    using(FileStream fsWrite = new FileStream(path,FileMode.OpenOrCreate,FileAccess.Write))
    {
        BinaryFormatter bf = new BinaryFormatter();
        bf.Serialize(fsWrite,p);
    }
    
    1. 在需要反序列化的地方,使用BinaryFormatter類的DeSerialize方法
    using (FileStream fsRead = new FileStream(path,FileMode.OpenOrCreate ,FileAccess.Read))
    {
        BinaryFormatter bf = new BinaryFormatter();
        pp = (Person)bf.Deserialize(fsRead);
    }
    Console.WriteLine(pp.Age);
    Console.WriteLine(pp.Name );
    

部分類

partial關鍵詞

密封類

sealed關鍵詞

密封類不能夠被繼承的,但是可以繼承於別人

重寫類的ToString方法

ToString()方法是object類內的方法,虛方法

普通屬性和自動屬性

自動屬性也會自己生成一個欄位,但是自動屬性不允許有方法體,對值的限制在建構函式裡面寫

GUID

產生一個全球唯一的編號

Guid.NewGuid().ToString();

MD5加密

涉及到密碼的都必須要MD5加密

using System.Security.Cryptography;
using System.Text;

string s = GetMD5("123");
Console.WriteLine(s);
Console.ReadKey();

static string GetMD5(string str)
{
    MD5 md5 = MD5.Create();
    //開始加密
    //需要將字串轉換為字元陣列
    byte[] buffer = Encoding.Default.GetBytes(str);
    //返回一個加密好的位元組陣列
    byte[] MD5Buffer = md5.ComputeHash(buffer);

    //將位元組陣列轉換為字串
    //return Encoding.Default.GetString(MD5Buffer);
    string strMD5 = "";
    for (int i = 0; i < MD5Buffer.Length; i++)
    {
        strMD5 += MD5Buffer[i].ToString("X2").ToLower();
    }
    return strMD5;
}