2009-06-03 81 views
0

我想在回发之间保留一个变量,所以我编写了一个访问器将其置于视图状态。其中哪一种是访问它的最佳方式?还是有更好的选择?在视图状态访问变量的语法

选项1:

private int Status 
{ 
    get 
    { 
     try 
     { 
      return (int)ViewState[@"__Status"]; 
     } 
     catch 
     { 
      return 0; 
     } 
    } 
    set 
    { 
     ViewState[@"__Status"] = value; 
    } 
} 

选项2:

private int Status 
{ 
    get 
    { 
     if (ViewState[@"__Status"] is int) 
     { 
      return (int)ViewState[@"__Status"]; 
     } 
     else 
     { 
      return 0; 
     } 
    } 
    set 
    { 
     ViewState[@"__Status"] = value; 
    } 
} 

感谢

编辑:我使用C#2.0

回答

4

下面是我倾向于做的方式:不是一个答案

private int Status 
{ 
    get { return (ViewState["MYSTATUS"] != null) ? (int)ViewState["MYSTATUS"] : 0; } 
    set { ViewState["MYSTATUS"] = value; } 
} 
+0

忘了这个方法,我之前也用过它 - 试图让我的代码更加一致。由于viewstate变量只能被这个访问器读取/改变,所以显式强制转换(如果不为null)应该没问题。谢谢。 – Nick 2009-06-03 13:13:50

1

嗯,选项2将无法编译,但我认为这是正确的方向。 ;-)尽量不要为此使用异常。改为检查ViewState变量。

+0

糟糕,愚蠢的错误。更正,谢谢。 – Nick 2009-06-03 13:03:29

0

确切地说,是合理的假设,空是一样的0。为什么不使用int?和物业类型,然后我认为你可以做这样的事情:

public int? MyProperty 
{ 
    get 
    { 
     return ViewState["status"] as int?; 

    } 
    set 
    { 
     ViewState["status"] = value; 
    } 
} 
+0

根据代码所做的假设,如果允许返回的值为null,或者您必须添加其他代码以检查null,您可能会看到弹出窗口。 – rjzii 2009-06-03 12:59:05