目前分類:C# (4)

瀏覽方式: 標題列表 簡短摘要

最近因為專案告一段落,在網路上看看有什麼新文章時,發現了一些新的作法,原文是英文,在此只是簡單做個記錄,與用自己的方式記錄幾個方法,有興趣看詳情的請參考原文....

參考文章:Implementing the Singleton Pattern in C#

Singleton  顧名思義就是在一個專案中,只能允許一個實體,不管被建立幾次,都是同一個實體。

 

 

文章標籤

王圓外 發表在 痞客邦 PIXNET 留言(2) 人氣()

最近實作了一個列舉的 Flag 來處理權限的機制,也在無意之間發現了 .NET 4.0 多了一個 HasFlag 這個 Function ,這倒是節省了很多寫 code 的程式與判斷。

如下的權限身分:

public enum SystemRoles
{
    None = 0,                       // 0000 0000 0000 0000  0x0000
    ReportUser = 1 << 0,            // 0000 0000 0000 0001  0x0001
    WebUser = 1 << 1,               // 0000 0000 0000 0010  0x0002
    
    ACCUser = 1 << 6,               // 0000 0000 0100 0000  0x0040
    HRUser = 1 << 7,                // 0000 0000 1000 0000  0x0080

    ReadyOnlyAdmin = 1 << 8,        // 0000 0001 0000 0000  0x0100

    ACCAdmin = 1 << 10,             // 0000 0100 0000 0000  0x0400
    HRAdmin = 1 << 11,              // 0000 1000 0000 0000  0x0800
    
    SystemAdmin = 1 << 14,          // 0100 0000 0000 0000  0x4000
    ITAdmin = 1 << 15,              // 1000 0000 0000 0000  0x8000
}

如下面的情況,早期要得到 hasFlag1 的值,必須使用 hasFlag2 的方式,才能得到相同的結果,在程式的判讀上也比較吃力,現在使用 HasFlag() 的 Function 變得更簡單易懂了。

SystemRoles flagEnum = SystemRoles.WebUser | SystemRoles.HRUser | SystemRoles.ReportUser;
        
bool hasFlag1 = flagEnum.HasFlag(SystemRoles.WebUser);
bool hasFlag2 = ((flagEnum & SystemRoles.WebUser) != 0) ? true : false;

王圓外 發表在 痞客邦 PIXNET 留言(0) 人氣()

最近實作了一個列舉的 Flag 來處理權限的機制,也在無意之間發現了 .NET 4.0 多了一個 HasFlag 這個 Function ,這倒是節省了很多寫 code 的程式與判斷。

如下的權限身分:

public enum SystemRoles
{
    None = 0,                       // 0000 0000 0000 0000  0x0000
    ReportUser = 1 << 0,            // 0000 0000 0000 0001  0x0001
    WebUser = 1 << 1,               // 0000 0000 0000 0010  0x0002
    
    ACCUser = 1 << 6,               // 0000 0000 0100 0000  0x0040
    HRUser = 1 << 7,                // 0000 0000 1000 0000  0x0080

    ReadyOnlyAdmin = 1 << 8,        // 0000 0001 0000 0000  0x0100

    ACCAdmin = 1 << 10,             // 0000 0100 0000 0000  0x0400
    HRAdmin = 1 << 11,              // 0000 1000 0000 0000  0x0800
    
    SystemAdmin = 1 << 14,          // 0100 0000 0000 0000  0x4000
    ITAdmin = 1 << 15,              // 1000 0000 0000 0000  0x8000
}

如下面的情況,早期要得到 hasFlag1 的值,必須使用 hasFlag2 的方式,才能得到相同的結果,在程式的判讀上也比較吃力,現在使用 HasFlag() 的 Function 變得更簡單易懂了。

SystemRoles flagEnum = SystemRoles.WebUser | SystemRoles.HRUser | SystemRoles.ReportUser;
        
bool hasFlag1 = flagEnum.HasFlag(SystemRoles.WebUser);
bool hasFlag2 = ((flagEnum & SystemRoles.WebUser) != 0) ? true : false;

王圓外 發表在 痞客邦 PIXNET 留言(0) 人氣()

Generics 是在 C# 2.0 時所新增加的類型,再 2.0 時就已經感受到他的好處了,最近把之前寫的程式又拿出來看時,就想說把改成 3.0 的格式好了,再著手進行的過程中,更感受到 C# 3.0 的強大的功能。讓以前要寫很多行來表示的敘述,通通變成一行就搞定了,以下就簡單的做個筆記,以免我自己忘記。(因為寫的更好的...人大有人在…噗~)

為了簡單介紹,我需要一個 Class,此 Class 為 Employee:

public class Employee
{
    public string Name { get; set; }

    public int ID { get; set; }

    public double Salary { get; set; }
}

 

現在我們建立一個 Employee 的 List 集合

List<Employee> Employees = new List<Employee>();

王圓外 發表在 痞客邦 PIXNET 留言(2) 人氣()

找更多相關文章與討論

您尚未登入,將以訪客身份留言。亦可以上方服務帳號登入留言

請輸入暱稱 ( 最多顯示 6 個中文字元 )

請輸入標題 ( 最多顯示 9 個中文字元 )

請輸入內容 ( 最多 140 個中文字元 )

請輸入左方認證碼:

看不懂,換張圖

請輸入驗證碼