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,
};
}