2014-04-01 66 views
0

我有一个方法可以对列表进行排序< T>它获取一个bool参数,它指示是按ascending还是由descending排序。初始化var by if - else

我想用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
任何想法?

+0

不能做到这一点!阅读[var(C#参考)](http://msdn.microsoft.com/en-us/library/bb383973.aspx)。你在做'结果'吗?我只能看到作业! –

回答

1

您可以使用一个三元操作符,如:

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

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

var而不是关键字为后期绑定。

1

你根本不能 - 必须明确声明一个变量的类型,或者在声明点可以推出。而且,由于变量没有被赋值,编译器无法推断它的类型。

只需声明resultIEnumerable<T>IList<T>