当前位置:编程学习 > C#/ASP.NET >>

如何使用Static变量

在页面中要经常用到一个一些数据。为了提高效率,

现在使用了static DataTable T_Lines;

if(!ispostback)
{
   T_Lines = db.Dt("Select * from dd where s='"+变量+"'", "T_Line");
}

下面各个函数中多次使用 T_Lines.Select("s='条件'");


在网上看了资料好像说使用静态Static,在多线程时,有可能出错。是否真的如此呢?

如果不这样写,各位给个好的方法!

谢谢! --------------------编程问答-------------------- 多线程就是要注意同步,因为对变量赋值,对于汇编不只一条语句,所以有可能出现你想不到的结果,c#封装了原子方式修改变量的方法(整数),复杂的可以自己写同步,临界,lock等 --------------------编程问答-------------------- 没影响吧,况且你也没用到线程 --------------------编程问答-------------------- 如何处理呢,不至于每次都去数据库中读取一次数据吧 --------------------编程问答-------------------- 在b/s页面中不能这样用,在c/s程序中还是可以的。b/s中多个用户是共享一个static变量,其中一个人修改了,别人的也跟着改变的。 --------------------编程问答-------------------- 感觉你要用的 不是静态与动态的区别


而是全局变量啊 

如果你在一个页面需要用到一个 变量,那就把它放到全局变量位置

至于静态的,是属于类的,

即,你要知道,这个静态的,在哪个线程更改了,又再哪个线程上使用了

是想使用 更改前得值,还是更改后的值


你这就用个 全部变量存放你的 dataTable 就行了 ,另外像你说的 各个函数中多次用到一个T_Lines.Select("s='条件'");

你可以考虑把它提出来,作为一个新变量  --------------------编程问答-------------------- 很不幸,就是B/S结构;那各位一般都怎么处理这样的情况呢? --------------------编程问答--------------------
引用 6 楼 weiforest0396 的回复:
很不幸,就是B/S结构;那各位一般都怎么处理这样的情况呢?

一般都是在ViewState,Session,Cookie中存放sql文的。像DataTable不推荐保存. --------------------编程问答-------------------- B/S 一般不使static吧,你不是不用多线程,多个人用这个变量时间都会出错,在当前页面直接调不就行吗?为什么非要static呀 --------------------编程问答-------------------- 几个人同时访问时该页面时会出问题的
去掉static,你可以选择用Session或者Cache --------------------编程问答-------------------- 使用Static的一个很大原因是,页面后回发事件 --------------------编程问答-------------------- 改成非静态:

DataTable T_Lines;

new class().T_Lines 调用 --------------------编程问答-------------------- ??? --------------------编程问答-------------------- 你可以用viewstate或者隐藏域吗?你查下,页面间传值。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,