静态方法混淆

Tar*_*rik 3 c# asp.net static-methods

我正在使用Asp.NET,我有一个名为的类PathFinder,其中包含StyleBarPath(string BrandId,string ProductId)返回的方法,例如路径包含的组合,brandId并且productId在同一个类中也有这样的方法.

我想static通过说PathFinder.StylePath("1","2");<a href=""></a>用户控件中使用返回的值来使它们成为在每个地方轻松调用它们的方法.

但是由于我这些天工作太多,我所知道的是因为某些原因而变得复杂.无论如何,这是我的问题:

由于我在许多地方使用内联编码<a href='<%=PathFinder.StylePath("1","2")%>'></a>,我不想<a href='<%=new PathFinder().StylePath("1","2")%>'></a>通过声明方法非静态来创建大量实例.

但我害怕更改方法返回值,因为定义静态方法.我的意思是当客户端调用此方法时,它不会影响同时调用相同方法的其他客户端?

他们会有不同的调用栈吗?

让我们说:

  • 客户端1使用这些参数调用方法 - {brandId:2,productId:3}
  • 客户端tow使用这些参数调用方法 - {brandId:3,productId:4}

此操作几乎在服务器处理其请求的同时发生.我想要学习的是调用是否会影响彼此并更改彼此的返回值,因为它们是静态定义的.

感谢您阅读到目前为止并成为帮手:)

我只是不希望客户path/1/2/在等待时看到path/2/3/

关于这个问题的一些注释:

  • 静态字段是否相同?

Joh*_*her 7

您可以同时从多个线程安全地调用静态方法,并在不同的时间给出以下内容:

  • 静态方法不访问自身之外的变量,或者这些变量也是线程安全的.
  • 静态方法不会产生非线程安全的副作用.

如果您的方法看起来像是这样,那么您只需要调整一些输入并返回结果而不访问函数之外的任何内容.这将是完全安全的.

静态字段与方法完全不同.它是变量的一个副本.对该静态字段的任何更改都将影响使用它的所有其他内容.