欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用C#中的Flags特性

 更新時(shí)間:2022年07月06日 15:30:46   作者:奮斗的大橙子  
這篇文章介紹了使用C#中的Flags特性,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

舉個(gè)例子:我有如下的一個(gè)需求,當(dāng)我想要取得用戶信息的時(shí)候,會(huì)先從本地緩存中查找,找不到然后從分布式緩存中查找,最后找不到再?gòu)臄?shù)據(jù)庫(kù)中查詢。但是有些場(chǎng)景我又不需要查詢數(shù)據(jù)庫(kù)。

所以我想建立如下這種模型。

public UserEntity  GetUserInfo(List<DataSource>  dataSources)
{
    var xxxx = new UserEntity();
    if(dataSources.Any(DataSource.Local)
    {
        //從本地緩存中獲取
        return xxxx;
    }
 
    if(dataSources.Any(DataSource.Distribution)
    {
        //從分布式緩存中獲取
        //更新本地緩存
        return xxxx;
    }
 
    if(dataSources.Any(DataSource.DB)
    {
        //從DB中獲取
        //更新分布式緩存
        //更新本地緩存
    }
    return xxxx;
}

但是每次調(diào)用者都去構(gòu)建一個(gè)List,比較麻煩,此時(shí)我們可以使用枚舉中的Flags特性,修改程序如下:

首先是枚舉的定義上,要加上   [Flags] 特性標(biāo)簽,并且定義 一般都是 2的n次方,主要是便于位移運(yùn)算

/// <summary>
///  數(shù)據(jù)取得地方
/// </summary>
[Flags]
public enum DataSource
{
    /// <summary>
    ///     本地緩存
    /// </summary>
    [Description("本地緩存")]
    LocalCache = 1,
 
    /// <summary>
    ///    分布式緩存
    /// </summary>
    [Description("分布式緩存")]
    DistributeCache = 2,
 
    /// <summary>
    ///     數(shù)據(jù)庫(kù)
    /// </summary>
    [Description("數(shù)據(jù)庫(kù)")]
    DB = 4,
}

修改代碼:

public UserEntity  GetUserInfo(DataSource dataSources)
{
    var xxxx = new UserEntity();
    if(dataSources.HasFlags(DataSource.Local)
    {
        //從本地緩存中獲取
        return xxxx;
    }
 
    if(dataSources.HasFlags(DataSource.Distribution)
    {
        //從分布式緩存中獲取
        //更新本地緩存
        return xxxx;
    }
 
    if(dataSources.HasFlags(DataSource.DB)
    {
        //從DB中獲取
        //更新分布式緩存
        //更新本地緩存
    }
    return xxxx;
}

調(diào)用的地方,可以通過(guò)“|”來(lái)指定,例如我只想用分布式緩存和數(shù)據(jù)庫(kù),那么:

var userInfo = GetUserInfo(DataSource.Distribution | DataSource.DB);

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C# 中使用正則表達(dá)式匹配字符的含義

    C# 中使用正則表達(dá)式匹配字符的含義

    正則表達(dá)式的作用用來(lái)描述字符串的特征。本文重點(diǎn)給大家介紹C# 中使用正則表達(dá)式匹配字符的含義,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2018-10-10
  • C#使用async和await實(shí)現(xiàn)異步編程

    C#使用async和await實(shí)現(xiàn)異步編程

    本文詳細(xì)講解了C#使用async和await實(shí)現(xiàn)異步編程的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-07-07
  • C#中計(jì)時(shí)器的簡(jiǎn)單實(shí)現(xiàn)方法示例

    C#中計(jì)時(shí)器的簡(jiǎn)單實(shí)現(xiàn)方法示例

    這篇文章主要介紹了C#中計(jì)時(shí)器的簡(jiǎn)單實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了C#計(jì)時(shí)器的簡(jiǎn)單定義與使用技巧,需要的朋友可以參考下
    2017-05-05
  • C#獲取注冊(cè)表指定鍵值操作

    C#獲取注冊(cè)表指定鍵值操作

    這篇文章主要介紹了C#獲取注冊(cè)表指定鍵值操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-12-12
  • 遍歷文件系統(tǒng)目錄樹(shù)的深入理解

    遍歷文件系統(tǒng)目錄樹(shù)的深入理解

    本篇文章是對(duì)遍歷文件系統(tǒng)目錄樹(shù)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • Winform實(shí)現(xiàn)抓取web頁(yè)面內(nèi)容的方法

    Winform實(shí)現(xiàn)抓取web頁(yè)面內(nèi)容的方法

    這篇文章主要介紹了Winform實(shí)現(xiàn)抓取web頁(yè)面內(nèi)容的方法,代碼只有短短幾行,但是功能很實(shí)用,需要的朋友可以參考下
    2014-09-09
  • C#?TreeView控件使用技巧匯總

    C#?TreeView控件使用技巧匯總

    這篇文章主要介紹了C#?TreeView控件使用技巧匯總,TreeView控件在窗體應(yīng)用里面使用也是頻率比較高的,我們?cè)谑褂肨reeView一般是對(duì)資源的分層展示,類(lèi)似數(shù)據(jù)結(jié)構(gòu)里面樹(shù)的凹入表示法
    2022-08-08
  • C#仿QQ聊天窗口

    C#仿QQ聊天窗口

    這篇文章主要為大家詳細(xì)介紹了C#仿QQ聊天窗口,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • 詳解WPF中用戶控件和自定義控件的使用

    詳解WPF中用戶控件和自定義控件的使用

    無(wú)論是在WPF中還是WinForm中,都有用戶控件(UserControl)和自定義控件(CustomControl),這兩種控件都是對(duì)已有控件的封裝,實(shí)現(xiàn)功能重用。但是兩者還是有一些區(qū)別,本文對(duì)這兩種控件進(jìn)行講解
    2023-03-03
  • c# 獲取數(shù)據(jù)庫(kù)中所有表名稱(chēng)的方法

    c# 獲取數(shù)據(jù)庫(kù)中所有表名稱(chēng)的方法

    在很多情況下我們需要將指定的數(shù)據(jù)庫(kù)中的所有表都列出來(lái)。在使用c#進(jìn)行軟件開(kāi)發(fā)時(shí),我們有哪些方法可是實(shí)現(xiàn)這個(gè)目的呢?本人對(duì)此進(jìn)行概要的總結(jié),有以下6中方式可以實(shí)現(xiàn)這個(gè)目的。
    2010-02-02

最新評(píng)論