C#中ServiceResponse静态方法创建实例是否存在并发数据混淆风险?
关于ServiceResponse静态方法的线程安全问题解答
你完全不用担心多用户请求时实例混淆的问题,原因如下:
静态方法每次调用都会创建全新实例:
Success和Failure方法里,每次调用都会执行new ServiceResponse(...),每个请求得到的都是独立的ServiceResponse对象,不存在实例共享的情况。请求线程完全隔离:ASP.NET Core中每个用户请求都会由独立的线程处理,控制器内的局部变量(比如你定义的
errors列表)都是当前请求线程独有的,不会和其他请求的变量产生交叉。类无共享状态:你的
ServiceResponse类所有属性都是实例级成员,没有静态字段存储状态,不同实例之间的属性值完全独立,不会互相覆盖。
另外可以给个小优化建议:可以给ServiceResponse的无参构造函数初始化Errors,避免后续可能出现的空引用问题:
public ServiceResponse() { Errors = new List<string>(); }
内容的提问来源于stack exchange,提问作者Lube
相关产品推荐
相关产品推荐

