C# 4.0 可选参数的条件用法

C# 4.0 可选参数的条件用法,c#-4.0,boolean,.net-4.5,optional-parameters,C# 4.0,Boolean,.net 4.5,Optional Parameters,我有以下课程: public class Result{ public string Name {get; set;} public string Category {get; set;} } public SearchResults { public string PageNum {get; set;} public string PageSize {get; set;} public string TotalCount {get; set;}

我有以下课程:

public class Result{
    public string Name {get; set;}
    public string Category {get; set;}
    }

public SearchResults {
    public string PageNum {get; set;}
    public string PageSize {get; set;}
    public string TotalCount {get; set;}
    public IEnumerable<Result> Results {get; set;)
    }
在上面的方法中,我只想在[full]参数为true时返回[Results]。默认情况下不返回它。

您可以使用并返回
null
以获得如下结果:

Results = full ? new[] { new Result { Name = "Alpha", Category = "Bravo" } } : null,
默认情况下,由于
Result
是一个属性,因此将为其分配
null
(默认)

因此,您的方法如下:

public SearchResults GetSearchResults(bool full = false)
{
    return new SearchResults
    {
        PageNum = 1,
        PageSize = 25,
        TotalCount = 100,
        Results = full ? new[] { new Result { Name = "Alpha", Category = "Bravo" } } : null,
    };
}  

如果full为false,您希望返回什么?那么这个方法应该如何有用?只要删除参数,调用者就不能调用它。有没有办法不返回属性本身而不是将其赋值为null?@GilliVilla,返回属性本身是什么意思?当我返回新对象且[full]为false时,您正在返回类型为
SearchResults
的新对象。我不希望[Results]出现在[SearchResults]中。除了[Result=null],现在有没有一种方式可以让[SearchResults]表现得好像它没有[Results]开始一样?@GilliVilla,不,你不能这样做,你必须创建两个单独的类,一个有
Result
属性,另一个没有属性。
public SearchResults GetSearchResults(bool full = false)
{
    return new SearchResults
    {
        PageNum = 1,
        PageSize = 25,
        TotalCount = 100,
        Results = full ? new[] { new Result { Name = "Alpha", Category = "Bravo" } } : null,
    };
}