代码之家  ›  专栏  ›  技术社区  ›  Darius Kucinskas

C#静态磁场锁定

  •  0
  • Darius Kucinskas  · 技术社区  · 15 年前

    是否需要锁定\u userByNameQuery静态字段Yes/No和way?

    public class SomeClass 
    {
        static Func<Entities, string, IQueryable<User>> _userByNameQuery = 
            CompiledQuery.Compile<Entities, string, IQueryable<User>>
                ((context, userName) =>
                    context.Users.Where(u => u.UserName.ToUpper() == userName));
    
        public bool UserNameExists(string userName)
        {
            userName = userName.ToUpper();
            return _userByNameQuery.Invoke(DataContext, userName).Count() > 0;
        }
    }
    
    2 回复  |  直到 15 年前
        1
  •  3
  •   Jon Skeet    15 年前

    使它为只读,而不是只读。在类型初始化的一部分,它只会初始化一次,并且委托是不可变的。没问题。

        2
  •  1
  •   Brian Gideon    15 年前