struct的使用场景

Demo1、可以当做缓存的key使用

当需要一组参数的值作为缓存key,通常会使用如下方式:

string keyName = arg1+"_"+arg2+"_"+arg3;

此时可以使用struct作为缓存key,只要struct所有属性相同,就会被认为是相同值。不再需要自己拼接缓存key

struct Key
    {
        public string Name { get; set; }
        public Type Type { get; set; }
    }
 private static ConcurrentDictionary<Key, string> cache = new ConcurrentDictionary<Key, string>();
        public static void Main(string[] args)
        {
            var k = new Key { Name="key1",Type=typeof(Program)};
            cache.GetOrAdd(k, key => {
                return JsonConvert.SerializeObject(key);
            });
            k = new Key { Name = "key1", Type = typeof(Program) };

            //会走缓存,因为两次k相同
            cache.GetOrAdd(k, key => {
                return JsonConvert.SerializeObject(key);
            });
      }

Demo2、排重

public struct CountryProvince
{
    public string CountryCode { get; set; }
    public string ProvinceCode { get; set; }
}

List<CountryProvince> list = new List<CountryProvince> {
    new CountryProvince{ CountryCode="A",ProvinceCode="B"},
    new CountryProvince{ CountryCode="A",ProvinceCode="C"},
    new CountryProvince{ CountryCode="A",ProvinceCode="B"}
};
var list2 = list.Distinct();//2
posted @ 2020-09-16 17:03  .Neterr  阅读(268)  评论(1编辑  收藏  举报