语言:C#, javascript
问题:比如我这样写public string f()
{
  Request.QueryString["a"]+.....//直接做一些操作
  Request.QueryString["b"]+.....//直接做一些操作
  Request.QueryString["c"]+.....//直接做一些操作
  .....
}public string f'()
{
  string a = Request.QueryString["a"];
  string b = Request.QueryString["b"];
  string c = Request.QueryString["c"];
  .....  a+...//做一些操作
  b+...//做一些操作
  c+...//做一些操作
}上面只是打个比方,并不仅限于Request.QueryString这种,就是说,一个函数(c#或者js)里是直接对一些对象操作,还是先把这些对象存放在变量里,然后再操作
因为这些对象只获取一次,而且有很多,所以我觉的是不是放在变量里多此一举,影响性能,但是放在变量里会显得代码比较好看,清晰,不知道各位看法如何

解决方案 »

  1.   

    我习惯用2,1理论性能教好,字符串变量赋值 string+= 不如换成stringBuilder,string引用类型。
      

  2.   


    前半句话有问题,后面说的正确。
    两种方法性能上我觉得无差别,1不存在理论上性能好的说法;第一种方法尽管没有刻意声明一个变量来保存querystring中的内容,但是计算机做计算都是在内存中,就算你没声明,编译器会自己开辟空间,进行拆箱操作,和显示声明一个空间来保存实际上是一个道理。写法2,代码规范好些。string换成stringbuilder倒是可以节省内存空间,不过这里的处理逻辑,这种性能上的提高可以忽略不计了。
      

  3.   

    通过属性赋值
    A=RequeryString[""]==null?"":RequeryString[""].ToString()
    public string A
    {
    get
    {
    return ViewState[""].ToString();
    }
    set
    {}}
    遍历querystring,Request.QueryString.Keys[i];