af.FriendUserID == toUserID).SingleOrDefault-6ren">
gpt4 book ai didi

linq - SingleOrDefault() 方法 : what is "a default value"?

转载 作者:行者123 更新时间:2023-12-03 07:59:03 27 4
gpt4 key购买 nike

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

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

鉴于文档:

返回序列的单个特定元素 或默认值 如果找不到该元素。

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

一个严肃的问题,对大多数人来说可能听起来简单而荒谬。

谢谢。

最佳答案

摘自 ECMA 圣经,第 334 节:

12.2 默认值

变量的默认值取决于变量的类型,并确定如下:

  • 对于值类型的变量,默认值与值类型的默认构造函数计算的值相同(第 11.1.1 节)。
  • 对于引用类型的变量,默认值为null .

  • [注意:初始化为默认值通常由内存管理器或垃圾收集器完成
    在分配使用之前将内存初始化为所有位为零。因此,使用 all-bitszero 很方便
    表示空引用。尾注]

    可空类型的默认值是 HasValue 的实例。属性是 false .引用
    可空类型的默认值的值属性导致类型异常 System.InvalidOperationException .默认值也称为空值
    可空类型。存在从 null 类型(第 11.2.7 节)到任何可为 null 的类型的隐式转换,并且这
    转换产生类型的空值。

    18.3.4 默认值

    如第 12.2 节所述,几种变量在以下情况下会自动初始化为其默认值
    它们被创建。对于类类型和其他引用类型的变量,这个默认值为空。然而,
    由于结构是不能为空的值类型,因此结构的默认值是由
    将所有值类型字段设置为其默认值,将所有引用类型字段设置为空。

    Example: Referring to the Point struct declared above, the example

    Point[] a = new Point[100]; 

    initializes each Point in the array to the value produced by setting the x and y fields to zero.



    结构的默认值对应结构的默认构造函数返回的值
    (§11.1.1)。与类不同,结构不允许声明无参数的实例构造函数。相反,每个结构都隐含一个无参数的实例构造函数,它总是返回结果的值
    从将所有值类型字段设置为其默认值并将所有引用类型字段设置为空。

    11.1.2 默认构造函数

    所有值类型都隐式声明了一个公共(public)的无参数实例构造函数,称为默认构造函数。
    默认构造函数返回一个零初始化实例,称为值类型的默认值:
  • 对于所有简单类型,默认值是由全零位模式产生的值:
  • 对于 sbyte、byte、short、ushort、int、uint、long 和 ulong,默认值为 0 .
  • 对于 char,默认值为 '\x0000' .
  • 对于浮点数,默认值为 0.0f .
  • 对于 double ,默认值为 0.0d .
  • 对于十进制,默认值为 0m .
  • 对于 bool,默认值为 false .
  • 对于枚举类型 E,默认值为 0 .
  • 对于结构类型,默认值是将所有值类型字段设置为其默认值并将所有引用类型字段设置为 null 所产生的值。 .
  • 对于可空类型,默认值为 HasValue返回 false .


  • 阿门

    你可以 download the holy book (4.0 版)直接来自微软网站。

    关于linq - SingleOrDefault() 方法 : what is "a default value"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3713122/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com