c# – 静态变量和静态方法之间的区别
我知道当你使用静态变量时,它的值会在所有用户之间共享.
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; } } 我的问题是:如果我使用静态方法,那么该方法的返回值是否也为所有用户共享?或者每个用户总是一个“独特”的价值? 假设这个方法被五个不同的用户调用五次,这个静态方法会返回特定用户输入的值,还是一个用户可能获得另一个用户输入的值? 解决方法
你的问题是:
答案是,这取决于.使用你的例子: 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成员变量,则来自不同用户的调用不会相互影响. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 正则表达式 – 在vim中,如何复制正则表达式模式?
- DWR3.0框架入门(2) —— DWR的服务器推送
- c# – 正在使用aync / await一个好主意的Web服务
- xcode – 在Swift中具有内部原始值的公共枚举
- xml – XPATH / XSLT:选择父节点的属性与另一个
- 有没有办法使用基于接口的json.net从json填充现有
- 【React】React实现手风琴效果
- C#编写最小花时隐藏为任务栏图标的Window applli
- [Swift]LeetCode871. 最低加油次数 | Minimum Nu
- JSON.parse()和JSON.stringify() 和 json.js+ jq