通过if - else初始化var

时间:2014-04-01 09:57:57

标签: c# linq sorting .net-4.0

我有一个方法可以对列表进行排序< T>获取bool参数,指示是按ascending还是按descending排序。

我想使用var作为返回类型。

protected void SortlistBy(bool IsByDescending)
    {
        var result;  
        // Initialize the var according to parameter value  
        if (IsByDescending == false)
            result  =  listModelElements.OrderBy(x => sort(x)).ToList();
        else
            result  =  listModelElements.OrderByDescending(x => sort(x)).ToList();
    }

我收到以下错误:Implicitly-typed local variables must be initialized
有什么想法吗?

3 个答案:

答案 0 :(得分:1)

这是不可能的。你必须声明一个类型。

var 是后期绑定的关键字。

答案 1 :(得分:1)

你根本无法 - 变量的类型必须在声明点明确声明或可推断。并且,由于变量未被赋值,因此编译器无法推断其类型。

只需将result声明为IEnumerable<T>IList<T>

答案 2 :(得分:1)

您可以使用三元运算符,如:

var result = IsByDescending ? 
               listModelElements.OrderByDescending(x => sort(x)).ToList() :
               listModelElements.OrderBy(x => sort(x)).ToList();