代码之家  ›  专栏  ›  技术社区  ›  asfsadf

SingleOrDefault()方法:什么是“默认值”?

  •  35
  • asfsadf  · 技术社区  · 15 年前

    我正在测试以下语句中是否存在用户记录:

    if (fromUser.AllFriends.Where(af => af.FriendUserID == toUserID).SingleOrDefault() == ???
    

    鉴于文件:

    或默认值 如果找不到该元素。

    粗体字是指什么?我在if语句中测试的到底是什么?

    一个严肃的问题,对大多数人来说可能听起来既简单又可笑。

    谢谢。

    6 回复  |  直到 15 年前
        1
  •  44
  •   Julien Roncaglia    10 年前

    ECMA圣经节选,第334节:


    12.2默认值

    • 对于值类型的变量,默认值与值类型的默认构造函数计算的值相同( ).
    • null

    [注意:默认值的初始化通常通过内存管理器或垃圾收集器来完成 在分配使用之前,将内存初始化为所有位零。因此,使用所有bitszero都很方便

    HasValue 财产是 false . 引用 System.InvalidOperationException . 默认值也称为 §11.2.7 )任何可为null的类型 转换生成类型的空值。

    18.3.4默认值

    如中所述 ,当 由于结构是不能为null的值类型,因此结构的默认值是 将所有值类型字段设置为其默认值,并将所有引用类型字段设置为null。

    例子 :参考上面声明的Point结构,示例

    Point[] a = new Point[100]; 
    

    结构的默认值与结构的默认构造函数返回的值相对应 ( §11.1.1 将所有值类型字段设置为默认值,将所有引用类型字段设置为空。

    11.1.2默认构造函数

    所有值类型都隐式声明一个称为默认构造函数的公共无参数实例构造函数。

    • 对于所有简单类型,默认值是全零位模式产生的值:
      • 0 .
      • '\x0000' .
      • 0.0f .
      • 0.0d .
      • 0m .
      • 对于bool,默认值为
    • 0 .
    • 对于结构类型,默认值是通过将所有值类型字段设置为其默认值并将所有引用类型字段设置为 无效的
    • 对于可为null的类型,默认值为 HasValue公司

    阿门

    你可以的 download the holy book

        2
  •  3
  •   recursive    15 年前

    引用类型的默认值为 null . 数字类型的默认值为 0 default(type) 获取您不确定的任何值类型的特定默认值。在您的特定情况下,默认值可能是 无效的 ,假设你在上课。

        3
  •  3
  •   Randolpho    15 年前

    default(TypeName) .

    为了 ReferenceTypes ,这是不变的 null . 为了 ValueTypes ,这通常是0(对于数字类型)或在调用其默认构造函数后的结构实例。

        4
  •  3
  •   Mark Byers    15 年前

    默认值是该类型的默认值(T)。

    但你应该用 Enumerable.Any

    if (!fromUser.AllFriends.Where(af => af.FriendUserID == toUserID).Any())
    {
        // etc...
    }
    

    Where Any 电话:

    if (!fromUser.AllFriends.Any(af => af.FriendUserID == toUserID))
    {
        // etc...
    }
    
        5
  •  2
  •   Tim W.    15 年前

    ReferenceTypes 默认为 null

    ValueTypes 可在此处找到: http://msdn.microsoft.com/en-us/library/83fhsxwc%28v=VS.90%29.aspx

        6
  •  0
  •   Alex Reitbort    15 年前

    元素的默认值是Default(type)。对于类,默认值为空。