加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 静态变量和静态方法之间的区别

发布时间:2020-12-16 00:04:26 所属栏目:百科 来源:网络整理
导读:我知道当你使用静态变量时,它的值会在所有用户之间共享. static string testValue = "";protected void SomeMethod(object sender,EventArgs e){ testValue = TextBox1.Text; string value = TestClass.returnString(TextBox1.Text); // -- return from a st
我知道当你使用静态变量时,它的值会在所有用户之间共享.

static string testValue = "";
protected void SomeMethod(object sender,EventArgs e)
{
    testValue = TextBox1.Text;        
    string value = TestClass.returnString(TextBox1.Text); // <-- return from a static method
}

因此,在这种情况下,如果一个用户访问网站并将值放入文本框,则当另一个用户在文本框中输入内容时,字符串testValue将被另一个值覆盖. (我认为?)

我现在有这个班:

public class TestClass
{
  public static string returnString(string msg)
  {
    return msg;
  }
}

我的问题是:如果我使用静态方法,那么该方法的返回值是否也为所有用户共享?或者每个用户总是一个“独特”的价值?

假设这个方法被五个不同的用户调用五次,这个静态方法会返回特定用户输入的值,还是一个用户可能获得另一个用户输入的值?

解决方法

你的问题是:

my question now is,if i use a static method,is the return value of
that method shared for all users aswell? or is that always a “unique”
value per user ?

答案是,这取决于.使用你的例子:

public class TestClass 
{ 
  public static string returnString(string msg) 
  { 
    return msg; 
  } 
}

在这种情况下,5个不同的用户(很可能)将5个不同的字符串传递给静态方法.因此他们会找回五个不同的字符串.所以对于这种情况:

string value = TestClass.returnString(TextBox1.Text);

每个用户都会回复他们在自己的TextBox中输入的内容.另一方面,如果代码是这样的:

string value = TestClass.returnString(testValue);

他们都会回来在返回时发生在静态字符串中的事情.

所以要记住的规则是:

>如果方法使用静态成员变量,则存在不同用户影响彼此结果的风险.无论方法是否静态,这都是无关紧要的.>如果方法仅使用调用参数和局部变量,并且调用参数本身不指向statisc成员变量,则来自不同用户的调用不会相互影响.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读