无法针对Null评估viewState

时间:2012-08-21 11:39:44

标签: asp.net c#-4.0 object-initializers

我用这个方法来填充网格视图的数据源,但是当getnewfalse时,它不会返回任何值,只返回一个包含单个空值的列表在它。

 private List<T> GetAll_T(bool getNew)
        {
            if (getNew)
                return (ViewState["T"] = Get_T()) as List<T>;
               //Get_T() returns a CustomList 
            return new List<T>
                {
                    ViewState["T"] != null ?
                    ViewState["T"] as T: 
                    (T)(ViewState["T"] = Get_T()) Collection
                };
        }

它给出了第二行警告[当视图状态为空时]。表达式始终为false

为什么有警告,当它在逻辑上是正确的时候!

1 个答案:

答案 0 :(得分:0)

从您的代码段开始,CustomerService.GetAllCustomer()返回的内容并不清楚。

你可以使用它,就像在函数的第(2)行返回一个列表一样,它就像在第(8)行返回一个对象一样。

我建议像这样写

private List<CustomerMaster> GetAllCustomer(bool getNew)
{
    if (getNew || null == ViewState["CustomerDataset"])
        ViewState["CustomerDataset"] = CustomerService.GetAllCustomer();
    return ViewState["CustomerDataset"] as List<CustomerMaster>;
}