if (!int.TryParse(Request.Params["classId"] as string, out this.classId))
{
    this.classId = 0;
}
为什么要在equest.Params["classId"] 后面加 as string?我把它删除了也可以的。

解决方案 »

  1.   


    Request.Params["classId"] as string  就是转为字符串的格式啊, 和Request.Params["classId"].Tostring()样的,你去掉可以,是因为他本身可能就是就是String,
      

  2.   

    Request.Params继承自NameValueCollection,可以隐式转换为string
      

  3.   

    as 运算符类似于强制转换操作;但是,如果转换不可行,as 会返回 null 而不是引发异常。
      

  4.   

    和ToString()几乎是一样的效果吧。
      

  5.   

    Request.Params["classId"] as string 就是转为字符串的格式啊, 和Request.Params["classId"].Tostring()样的,你去掉可以,是因为他本身可能就是就是String,
      

  6.   

    不是“可能”,而是本来就是string。如果你不知道它的类型是什么,那就更不能胡乱去用as string了,而应该查询一下Params的定义看看它到底是什么类型。
      

  7.   


    程序员编程有两种基本态度,一种是为了系统流程和数据负责,所以假设此时程序员不确定的话,他至少会多写一两行代码去检查判断然后使用if语句将意外处理程序写出来。而这种自欺欺人地滥用as的程序员,它不管是否会把错误数据带到后边的程序里,只要让这个蒙混过关就算了。反正后边的程序、其它人编写的程序出现bug以后再慢慢地找(而且也很难快速定位bug准确位置)。这种滥用as string或者ToString()程序我是非常反感的(尽管我的容忍能力很强)。编程时必须清楚知道类型是什么,不能随意编写这类代码。真正使用as的时候,实在明确知道Params类型定义的情况下,确有需要时才应该用as。