代码之家  ›  专栏  ›  技术社区  ›  ilija veselica

可空类?

  •  3
  • ilija veselica  · 技术社区  · 15 年前

    我有这门课

    public class FilterQuery
        {
            public FilterQuery() { }
    
            public string OrderBy { set; get; }
            public string OrderType { set; get; }        
    
            public int? Page { set; get; }
            public int ResultNumber { set; get; }
    
        }
    

    public IQueryable<Listing> FindAll(FilterQuery? filterQuery)
    

    这可能吗?

    2 回复  |  直到 7 年前
        1
  •  21
  •   Noldorin    15 年前

    这就立即引出了 为什么? . 根据定义,类是 引用类型

    在您的情况下,您可以简单地定义:

    public IQueryable<Listing> FindAll(FilterQuery filterQuery)
    

    FindAll(null)

    如果您使用的是C#/.NET 4.0,一个不错的选择是:

    public IQueryable<Listing> FindAll(FilterQuery filterQuery = null)
    

    这意味着您甚至不必指定null。重载在以前的版本中也会起同样的作用。

    public IQueryable<Listing> FindAll()
    {
        return FindAll(null);
    }
    
        2
  •  8
  •   Adam Robinson    15 年前

    class 类型是引用类型,这意味着根据定义它可以为null。事实上,没有办法 执行 那就是 非空

    这个 Nullable<T> struct被设计为允许值类型(根据定义,不是null)表示null值。

    可为空<T> null (或 Nothing 在VB.NET中)是语法糖;因为 可为空<T> 是一个结构,它实际上不能是 HasValue false Value default(T)