如何知道一个变量是否只是另一个对象的“指针”或者是否可以独立存在

2024-04-25

$App = New-Object -TypeName Microsoft.SqlServer.Dts.Runtime.Application; 

$PackageFullPath = 'C:\SSISPackage.dtsx'; 

$Package = $App.LoadPackage($PackageFullPath, $null, 0);

$x = $Package.Connections
$x.Remove("Something")

$App.SaveToXml($PackageFullPath, $Package, $null)

我的问题是当我将实例分配给新变量时$x,我怎么知道什么时候调用一个方法$x它将反映$Package?所以当我从中删除一些东西时$x,它也会将那个东西从$Package?如果答案是“视情况而定”,在不进行实验的情况下我怎么能知道呢?


tl;dr

因为$Package.Connections属性包含 .NET 的实例参考类型,即Microsoft.SqlServer.Dts.Runtime.Connections https://learn.microsoft.com/en-us/dotnet/api/microsoft.sqlserver.dts.runtime.connections, $x and $Package.Connections引用完全相同的集合实例,所以$x.Remove("Something")是相同的$Package.Connections.Remove("Something")


该行为取决于给定值是否是 .NET 的实例参考类型 https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/reference-types or 值类型 https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/value-types:

  • When 参考类型实例被分配给一个(新)变量/作为参数传递,它是参考(“指针”)指向被复制的实际数据,这意味着原始值和目标变量/参数都引用同一个物体.

  • 相比之下,分配/传递值类型实例复制了价值本身, 导致独立副本的数据。

您可以检查存储在给定变量中的对象$x如下:$true表示一个值类型实例,$false引用类型实例:

$x.GetType().IsValueType

注意类似收藏的类型,包括arrays, are 参考类型实例,所以$x and $Package.Connections在您问题的代码中将引用同一个集合。
相比之下,所有所谓的原始类型,例如数字,是值类型.

如果您不想依赖检查在运行时,你可以检查文档对于给定类型(语言设置为 C#)将使用以下“类型类型”标识符:

  • Reference types:
    • class (e.g. ArrayList https://learn.microsoft.com/en-US/dotnet/api/System.Collections.ArrayList)
  • Value types:
    • struct (e.g., DateTime https://learn.microsoft.com/en-US/dotnet/api/System.DateTime)
    • enum (e.g., PlatformID https://learn.microsoft.com/en-US/dotnet/api/System.PlatformID)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何知道一个变量是否只是另一个对象的“指针”或者是否可以独立存在 的相关文章

  • (可选)根据运行时值序列化属性

    从根本上讲 我想根据序列化时的值包含或省略生成的 Json 中的属性 更具体地说 我有一个类型 它知道是否已为其分配了值 并且我只想序列化该类型的属性 如果有 has是分配给它的东西 所以我需要在运行时检查该值 我试图让我的 API 更容易
  • 在应用程序窗口外检测 StylusDown

    简单的问题 希望答案不会是 你不能 我如何 在代码中 订阅 全局 手写笔按下事件 Windows 7 显然以某种方式做到了这一点 因为只要我使用手写笔 wacomm 笔和触摸 但这似乎无关紧要 就会出现小平板电脑图标 我想创建一个简单的绘图
  • 如何在 PHP 中检查特定类型的对象

    我有一种方法 它接受 PDO 对象作为参数 允许用户使用现有连接 而不是打开新连接的方法 并节省资源 public static function databaseConnect pdo null 我知道is object 检查参数是否是一
  • Jenkins 中的 Powershell 转义路径字符

    我有一个声明性管道 应该执行 powershell 步骤来安装路径 路径作为参数提供 parameters string name UNC defaultValue server01 lab local shared data descri
  • 无法在 Windows docker 容器中配置 ASP.NET HTTPS 端点

    在 Windows docker 容器中运行 ASP NET Core 时出现此错误 Unhandled Exception System InvalidOperationException Unable to configure HTTP
  • Conda 无法在 Powershell 中激活

    我已经在我的 Windows 10 笔记本电脑上安装了 anaconda 我正在尝试激活名为的Python环境pyenv 首先 我检查conda env list在我的笔记本电脑中 这是 powershell 上的输出 PS C Users
  • 在 init 之外在 java 中创建对象

    因此 对于我正在创建的游戏 我有一些扩展 GameDriver 的类 到目前为止 在所有其他类上我都能够扩展 GameDriver 然后在 GameDriver 中我可以执行以下操作 ArrayList
  • 单击按钮本地化应用程序

    我在我的项目 mainMaster 页面中找到了 imageButtons
  • 如何检测机器是否加入域?

    如何检测计算机是否已加入 Active Directory 域 相对于工作组模式 如果没有必要的话 不要用 pinvoke 来愚弄 参考System DirectoryServices 然后调用 System DirectoryServic
  • 将绝对路径转换为相对路径 C# [重复]

    这个问题在这里已经有答案了 可能的重复 获取相对于当前工作目录的路径 https stackoverflow com questions 703281 getting path relative to the current working
  • GDI+ 中绘图坐标的硬界限是什么?

    我这样渲染插值曲线 e Graphics DrawLines new Pen Color Red interpolationPoints ToArray 有时会抛出 OverflowException 对 interpolationPoin
  • 在 Orchard 中设置唯一的主体类和 ID

    有没有办法在 Orchard 中为每页设置唯一的正文类和 ID 我希望能够在 编辑页面 部分控制这些 例如 主页的正文 ID 为 home 关于页面的正文 ID 为 about 等 并且 如果 about 页面下有子页面 这些页面将具有 a
  • .net MVC 将 MP4 流式传输到 iDevice 问题

    我一直在编写用于提供视频服务的一段代码 但遇到了一些问题 代码如下 public ResumingFileStreamResult GetMP4Video string videoID if User Identity IsAuthenti
  • 如何清除整个终端(PowerShell)

    我有一个问题 在powershell中使用clear或cls命令仅清除终端的可见部分 我想知道如何清除整个终端 顺便说一句 我使用 VSCode tl dr 问题是关于清零的both屏幕和回滚缓冲区 in the 综合终端 of 视觉工作室
  • 在 PowerShell 错误消息中使用 touch 命令创建新文件

    我的桌面上有一个使用 PowerShell 创建的目录 现在我尝试在其中创建一个文本文件 我确实将目录更改为新目录 然后输入touch textfile txt 这是我收到的错误消息 touch The term touch is not
  • 无法通过 HTTPS 调用 Web 服务

    我正在开发一个 Net 应用程序 它与 Web 服务通信以获取一些数据 Net 应用程序和 Web 服务之间的连接是通过 HTTPS 完成的 当我从 Net 应用程序调用 Web 服务时 我得到以下堆栈跟踪 System Net WebEx
  • 我们可以使用 EWS 托管 API 连接到 Exchange 2016 吗?

    我使用的是 EWS 托管 API 2 2 它的枚举中没有显示 Exchange 版本 2016 我可以看到 Exchange 2013 之前的版本 那么如何连接到 Exchange Server 2016 该 API 是否尚未从 Micro
  • 通过 powershell 获取压缩的 TFS 2015 (vNext) 构建输出日志(就像构建后的下载链接一样)

    我想知道是否有人有一个 PowerShell 脚本 可以通过 TFS 2015 vNext 的 Rest API 下载此构建 ID 的所有当前构建日志 直到当前步骤 为每个记录的构建步骤创建单独的文本文件 并压缩所有文本文件 或者 如果已经
  • TPL 数据流块下游如何获取源生成的数据?

    我正在使用 TPL Dataflow 处理图像 我收到处理请求 从流中读取图像 应用多次转换 然后将生成的图像写入另一个流 Request gt Stream gt Image gt Image gt Stream 为此 我使用块 Buff
  • System.IO.Compression 和 ZipFile - 提取并覆盖

    我使用标准 VB NET 库来提取和压缩文件 它也可以工作 但是当我必须提取并且文件已经存在时 问题就出现了 我使用的代码 Imports Imports System IO Compression 崩溃时我调用的方法 ZipFile Ex

随机推荐

  • RecyclerView 和 Picasso 图像滚动后消失

    我没有找到答案here https stackoverflow com questions 29564824 recyclerview disappearing images here https stackoverflow com que
  • GWT 和 Google 文档 API

    我正在使用 GWT 创建一个简单的应用程序 让教师可以轻松创建自己的课程 该应用程序将位于 Google App Engine 上 但我想将课程存储在用户的 Google 文档空间中 是否可以 据我所知 gwt 将 java 转换为 jav
  • 未捕获的错误:期望增强器是一个函数

    我试图从组件调用减速器并希望在组件中渲染它 但是当我尝试将减速器存储在 redux 的 createStore 方法中时 出现了上述错误 我的代码是这样的 import applyMiddleware compose createStore
  • Powershell Invoke-RestMethod 授权标头

    当调用一个Invoke RestMethod使用 Powershell 例如 Invoke RestMethod Method Get Uri https google com api GetData Headers headers and
  • Pandas 读取缺少一个标头的 csv

    我正在尝试使用 Pandas 读取 csv 文件 但第一列包含用逗号分隔的名字和姓氏 这会导致 Pandas 认为有 5 列而不是 4 列 因此最后一列现在没有标题 因此无法选择它 该文件如下所示 CustomerName ClientID
  • 在 SQL 中将字符串拆分为多行

    我继承了一个数据库 在努力使其更干净 更有用的过程中 我遇到了以下问题 将文件列移动到单独的表后 我现在的任务是将这些文件分成不同的行 请看我下面的例子 key jobid files 1 30012 file1 pdf file2 pdf
  • SSRS 聚合聚合

    这两天我都在用头撞墙 我的场景是这样的 我有一个记录集 在 SSRS 表中分为 4 组 他们是 StartPeriod gt Area gt Job gt Details 相关列包含两个不同的记录计数 一个是有错误的记录数 另一个是该组的记
  • SWI-Prolog 中的约束编程

    我想要一个包含三个元素 A B 和 C 的列表 L 并具有以下约束 use module library clpfd L A B C L ins 1 3 A B C 但是 它给出了一个错误 Syntax error Operator exp
  • UIViewController 弹出时未释放

    我有一个表视图 当选择一个单元格时 它将视图控制器推送到导航堆栈上 SAPostTableViewController postViewController SAPostTableViewController alloc initWithN
  • android kotlin java.io.FileNotFoundException:/storage/emulated/0/number.txt:打开失败:EACCES(权限被拒绝)

    我正在使用 kotlin 为 Android 10 编写一个应用程序 该应用程序必须读取名为number txt来自内部存储 但它总是失败 java io FileNotFoundException storage emulated 0 n
  • 在 Java 8 中使用 Java 7 比较器

    情况 我有一个 OSGi 项目 我正在尝试迁移到 Java 8 在我的项目中 我依赖于我 OSGi fied 的第三方库 只需添加MANIFEST MF文件并将元数据放入其中 这些库是从只读 SVN 存储库中签出的 因此我可以在需要时签出更
  • 在 iframe 中显示缩略图

    我在这方面还很陌生 我有以下内容iframe 我想做的就是让它发挥作用video1 1 但显示其中的图像video1 2 我尝试做的是 但这行不通 有简单的方法吗 iFrame 标记中没有 href 属性 看 http www w3scho
  • Dagger 2:何时使用构造函数注入,何时使用字段注入?

    我有点懒 过去几乎完全使用现场注入 我只是提供空的构造函数 放入我的 Inject 字段 我的一切看起来都很好很简单 然而 字段注入有其权衡 因此我设计了一些简单的规则来帮助我决定何时使用字段以及何时使用构造函数注入 如果我的逻辑有错误或者
  • 如何在android中创建自定义选项菜单

    我正在创建一个选项菜单 它有三个选项 HOME EMAIL VISIT 所有三个选项都位于同一行 我必须在上面显示 主页 选项 并在下面显示 主页 选项中的两个选项 根据所附的屏幕截图 有任何想法吗 谢谢 这是我的 XML 文件 menu
  • 如何在其他src文件夹中包含头文件

    我有一个 C 项目 有两个 src 文件夹 文件夹1中的源文件可能需要包含src文件夹2中的头文件 这可能吗 或者我应该如何编写我的 Makefile 谢谢 根据两个文件夹的相关程度 例如 如果它们是同一个项目 那么它可以很简单 inclu
  • 在改造库中禁用 SSL 证书检查

    我正在使用 android 中的改造来连接服务器 public class ApiClient public static final String BASE URL https example com private static Ret
  • 如何用凸形状形成凹形状?

    我试图绕过只能在 SFML C 库中形成凸形状的规则 为此 我计划测试给定的顶点 如果是凹的 将顶点分成组 测试每个组的凹性 并重复直到得到看起来像的全套凹形形状 就像组合在一起时的原始形状一样 我想知道的是 测试形状凹度的方程式是什么 它
  • 有没有可以解析 ANSI x12 和 UN/EDIFACT 标准中的 EDI 文件的开源 Java 库?

    是否有任何开源java库可以解析EDI文件ANSI X12 and 联合国 电子信息数据库标准 我已经发现smooks http www smooks org 它支持 UN EDIFACT 标准 但不确定是否支持 ANSI X12 标准中的
  • 使用“”元素为 SVG 生成 IMG src 数据 URI

    是否存在安全原因阻止
  • 如何知道一个变量是否只是另一个对象的“指针”或者是否可以独立存在

    App New Object TypeName Microsoft SqlServer Dts Runtime Application PackageFullPath C SSISPackage dtsx Package App LoadP