ASP.NET 静态方法特性

龟叔啊 2016-02-15 03:30:16
大家好!我想请教一个关于静态方法的问题:场景是这样的一个业务类的方法是静态的并定义了一个形参,方法内部读取该参数并进行逻辑计算等,那么在多个用户访问并调用该静态方法时是否会出现读取参数值冲突问题?即相互影响?
...全文
159 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wanghui0380 2016-02-15
  • 打赏
  • 举报
回复
引用
那么我们经常使用DbHelperSQL帮助类它定义的都是静态方法的是否意味着也会有问题?
这得看他们依赖什么,如果这些方法里面依赖了全局性静态属性,那么这些静态方法就是非线程安全的(如果代码本身没有做其他线程保护的话)
wanghui0380 2016-02-15
  • 打赏
  • 举报
回复
只要你遵循“迪米特法则”法则编写就可以
引用
狭义的迪米特法则 如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。如果其中的一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用。 朋友圈的确定 “朋友”条件: 1)当前对象本身(this) 2)以参量形式传入到当前对象方法中的对象 3)当前对象的实例变量直接引用的对象 4)当前对象的实例变量如果是一个聚集,那么聚集中的元素也都是朋友 5)当前对象所创建的对象 任何一个对象,如果满足上面的条件之一,就是当前对象的“朋友”;否则就是“陌生人”。
所以基于上面的原则,你的提问“场景是这样的一个业务类的方法是静态的并定义了一个形参,方法内部读取该参数并进行逻辑计算等,那么在多个用户访问并调用该静态方法时是否会出现读取参数值冲突问题” 答案是不会冲突,因为他是外部传递进来的,不是公用的资源。(如果你依赖的是公用资源那就另外一说,公用资源比如相同的对象,相同的文件,相同的静态变量,那就是非线程安全的东西)
龟叔啊 2016-02-15
  • 打赏
  • 举报
回复
引用 1 楼 bdmh 的回复:
如果不是在线程中操作,对于访问没问题,但是对于后续的操作,这个值就是不确定的了,很有可能已经不是你要的值了
那么我们经常使用DbHelperSQL帮助类它定义的都是静态方法的是否意味着也会有问题?
bdmh 2016-02-15
  • 打赏
  • 举报
回复
如果不是在线程中操作,对于访问没问题,但是对于后续的操作,这个值就是不确定的了,很有可能已经不是你要的值了

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧