LINQ -Where 表达式返回新实例还是对对象实例的引用

2024-06-03

对于某些人来说,这可能是一个基本问题,但它影响了我设计程序的方式。

我有一个 A 类型的集合:

IEnumerable<A> myCollection;

我根据两个不同的标准过滤我的收藏:

IEnumerable<A> subCollection1 = myCollection.Where(x => x.Count > 10);
etc.

现在,我知道 .Where 表达式将返回 IEnumerable 的新实例,但新集合是否包含对“myCollection”引用的类型 A 实例的相同引用,还是创建了类型 A 的新副本?如果创建类型“A”的新实例,是否可以说“subCollection1”引用与“myCollection”引用相同的 A 实例?

编辑:添加进一步的说明。

我正在寻找一种方法,以便当我对“subCollection1”中的“A”实例进行更改时,它也会针对“myCollection”进行修改。


如果它们是类,则实例是相同的,但如果它们是结构/值类型,则复制。

int、byte 和 double 是值类型 http://msdn.microsoft.com/en-us/library/s1ax56ch.aspx,结构也是如此(比如System.Drawing.Point和自定义结构)。 但是字符串,您自己的所有类,基本上是“其余的”,都是参考类型 http://msdn.microsoft.com/en-us/library/490f96s2.aspx.

注意:LINQ 使用与所有其他分配相同的规则。

对于对象:

Person p1 = new Person();
p1.Name = "Mr Jones";
Person p2 = p1;
p2.Name = "Mr Anderssen";
// Now p1.Name is also "Mr Anderssen"

对于结构:

Point p1 = new Point();
p1.x = 5;
Point p2 = p1;
p2.x = 10;
// p1.x is still 5

使用 LINQ 时也适用相同的规则。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LINQ -Where 表达式返回新实例还是对对象实例的引用 的相关文章

随机推荐

  • 在php word中将两个徽标对齐在同一行

    我使用 php word 添加了两个徽标 但两个徽标不在同一行 我希望两个徽标位于同一行 如下所示 我的错误在哪里 if file exists logo table gt addRow table gt addCell 20000 arr
  • 防止基于时间的复制保护规避? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一些试用软件希望分发给客户 我希望试用版软件在安装 30 天后停止工作 在软件中简单检查系统日期是实现此目的的最直接方法 但是客户
  • 将参数从 AWS lambda 传递到 AWS CodePipeline

    我有一个 lambda 通过 AWS SDK 启动 CodePipeline 执行startPipelineExecution功能 是否有任何机制可将参数传递给 CodePipeline 构建 以便它可以使用 CodeBuild 构建中的值
  • 如何修改实时 Alexa 技能?

    我需要修改我已发布的 Alexa 技能 我熟悉亚马逊在发布技能后自动创建的 开发中 技能版本 我不明白的是如何迭代我的技能 特别是当我需要同时更改交互模型和链接的 Lambda 函数时 例如 我可以创建一个单独的 开发中 Lambda 函数
  • 数组中的不同类型,从数组中取出它们时如何知道将它们转换为什么?

    假设有一个通用的List类型的Packet 持有自定义类扩展Packet 例如登录包 or 聊天包 假设我把这些放在一个列表中 当我把它们拿出来时 最 具体 的类型是Packet 我想将它们转换成更具体的类型 回到原来的类型登录包 or 聊
  • 如何使用jquery格式化数字

    我正在尝试删除 之后的数字 然后我想格式化数字 16810900 211233 喜欢这个 16 810 900 但我不知道该怎么做 这是我的 html 是这样的 div class main p class active 10200 00
  • Spring Batch 多线程

    我正在编写一个 Spring Batch 并希望在需要时对其进行扩展 我的 ApplicationContext 看起来像这样 Configuration EnableBatchProcessing EnableTransactionMan
  • 如何将 Swift 字符串传递给 C 函数?

    我在将字符串从 swift 传递到用 c 编写的函数时遇到严重问题 我正在尝试在我的快速代码中执行此操作 var address 192 168 1 2 var port 8888 initSocket address port c 函数如
  • redux 教程:const 存储在 this.props 中

    我正在做教程 React 视频 24 https egghead io lessons javascript redux passing the store down explicitly via props https egghead i
  • 在 3d 空间中的两个平面之间进行插值

    我正在开发一种工具 可以让您在 3D 体积 上圈出 包围事物 我想通过标记 切片 1 和 3 并从该信息 填充 切片 2 来节省时间 两个简单的解决方案是 1 slice2 slice1 AND slice3 gets the overla
  • .NET - 用户控件拖放 - 子控件

    我有 FlowLayoutPanel 和用户控件 可以拖放重新排序 这种作品 但问题是子控件阻止拖动实际的父 UserControl 所以我的问题是如何启用包含子控件的 UserControl 的拖动 如果我理解正确的话 我遇到了与您相同的
  • 通过 JDBC 调用 Sybase 存储过程时结果集为空

    我正在调用一个通过 JDBC 返回多个结果集的 Sybase 存储过程 我需要获取一个特定的结果集 其中有一列名为 结果 这是我的代码 CallableStatement cs conn prepareCall sqlCall cs reg
  • Flutter如何post json数组

    如何在 json 数组下面发布 LstUserOptions OptionID ca339e40 10cc 4459 b9ec 07f7df0f4c69 我找到了解决方案 List
  • 如何让 HttpClient 将凭据与请求一起传递?

    我有一个与 Windows 服务通信的 Web 应用程序 托管在 IIS 中 Windows 服务使用 ASP Net MVC Web API 自托管 因此可以使用 JSON 通过 http 进行通信 Web 应用程序被配置为进行模拟 其想
  • 随机“pythonw.exe 已停止工作”崩溃

    SO 有问题的代码如下 但是它也可能随机发生在其他脚本上 我不认为错误在于代码中 由于某种原因 它有时会完全随机地崩溃并弹出 pythonw exe 已停止工作 的消息 可能是在 5 小时 24 小时或 5 天后 我不明白为什么会崩溃 fr
  • 带旋转器的时间选择器?

    我正在尝试构建一个 TimePickerDialog 但不幸的是出现的时间选择器使用起来非常麻烦 有什么方法可以构建一个像 Android 使用的旧时间选择器一样的时间选择器 如下所示 我的代码如下 ButtonTime Click del
  • Mathematica 列表轮廓图3D

    我有表格中的数据 x y z f 我在用ListContourPlot3D但我得到的只是一个空盒子 每个方向的尺寸为 1 到 1 这是我的代码 ListContourPlot3D data5 PlotRange gt All AxesLab
  • 为什么类方法中的“self = [[Rectangle alloc] init]”是错误的?

    在 Apple 的文档 Objective C 编程语言 中 第 48 页说道 Rectangle rectangleOfColor NSColor color self Rectangle alloc init BAD self setC
  • 自定义角色提供程序不实现继承的抽象成员

    我需要一些帮助在 ASP NET MVC 应用程序中实现自定义角色提供程序 问题是我遇到了几个错误 例如 MyRoleProvider does not implement inherited abstract member System
  • LINQ -Where 表达式返回新实例还是对对象实例的引用

    对于某些人来说 这可能是一个基本问题 但它影响了我设计程序的方式 我有一个 A 类型的集合 IEnumerable a myCollection 我根据两个不同的标准过滤我的收藏 IEnumerable a subCollection1 m