最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用C#中的Flags特性

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

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

最新評(píng)論

玉田县| 安康市| 赤壁市| 治多县| 扎兰屯市| 松阳县| 杨浦区| 曲松县| 桂林市| 巴南区| 罗山县| 南丰县| 兴隆县| 通许县| 游戏| 琼结县| 原平市| 丽水市| 台湾省| 宜丰县| 石家庄市| 漳平市| 大化| 阳朔县| 丹棱县| 金昌市| 龙井市| 文山县| 翼城县| 本溪市| 长泰县| 邵武市| 阜新市| 四子王旗| 大连市| 乌兰浩特市| 嘉义县| 铁力市| 梨树县| 商南县| 夹江县|