以前就听很多程序员说在程序中发尽量不用使用静态变量和静态方法,因为静态方法和静态变量会产生很多不正确的数据,一直没理解这句话的意思,在网上看到静态变量是共享的,但是也有很多人建议使用静态方法,不知道该什么下情况使用静态方法和变量,什么情况下不使用,请对这方面有了解的程序员给于解答,比如我写了段操作数据库的静态方法:
public static void ExecuteNonQuery(string SqlString)
{
SqlCommand cmd = CreateCommand(SqlString);
cmd.ExecuteNonQuery();
Close();//关闭数据库连接
}
请大家说说这样写的有什么问题
public static void ExecuteNonQuery(string SqlString)
{
SqlCommand cmd = CreateCommand(SqlString);
cmd.ExecuteNonQuery();
Close();//关闭数据库连接
}
请大家说说这样写的有什么问题
解决方案 »
- gridview 控件有一列是布尔类型的数?
- 请问我应该BAIDU什么关键字好学习相关技术?
- 这种布局又该怎么棒定数据?请高手帮忙
- 奇怪啊,iis日志居然没写访问http://localhost/web/login.aspx页面的记录
- ADO.NET结构下,对数据表及数据的加工在哪里做?
- 如何在WEB。CONFIG中配置CONNECTION?五十分相送
- Linq下的Union
- WPF,触发器为什么报错?
- printDocument 的使用环境问题?
- 如何在ASP.NET中创建有返回值的对话框?(在C#代码中而非在HTML中)并可引用该对话框的返回值?
- 如何获取CPU唯一标识??
- 怎么把窗体整个保存为图片啊
有一个按钮单击事件
private static int count = 0;//声明一个静态计数变量
protected void Button1_Click(object sender, EventArgs e)
{
count++;
Label2.Text = count.ToString();
}
当我单击按钮一次的时候,我希望Label文本显示的是1(如果只有我一个人在操作,结果是正确的)
如果同时有另一个人也单击按钮,他也只击了一次,他希望看到的结果也是1,但是因为我之前已经单击过1次了,这个时候文本显示的结果是2(这个我已经做过测试了)静态方法是否也会出现这样意想不到的结果呢?比如:
/// <summary>
/// 判断文件是否存在
/// </summary>
/// <param name="FileName"></param>
/// <returns></returns>
static public bool ExistsFile(string FileName)
{
return File.Exists(FileName);
}
我给他传的文件名是一个普通的变量,但是判断的方法是静态方法
他会不会也出现这种意想不到的结果呢?请帮忙回答一下
静态变量会在页面关闭时才释放 也就是讲只要这个页面打开着 那么大家都共用这个变量
1,静态方法和静态变量是只属于原始类的
2,在内存上永远只有一份拷贝(原始类中),不会随着新建此类的对象而产生
3,所以只要有访问权限,在任何地方, 不需要实例化就可以用 类名.方法名() 来访问
static public bool ExistsFile(string FileName)
{
return File.Exists(FileName);
}
这个方法虽是静态的方法 但他的参数非静态变量 而是这个方法的局部变量
所以不会出现共享的结果 因为参数在变
多线程或多用户的话,静态变量前加volitile,静态函数里面使用Lock控制线程安全。