属性。有什么有用的目的?

2024-04-02

Under System.Runtime.InteropServices the <Out()>属性存在。 但它有什么用呢?如果您可以使用以下示例作为答案的基础,我将很高兴。

 Shared Sub Add(ByVal x As Integer, ByVal y As Integer, <Out()> ByRef Result As Integer)
  Result = x + y
 End Sub

该属性的目的有两个:

  • 调用站点处理,是否强制变量初始化
  • 编组

如果您要从 C# 或具有类似语义的类似语言调用该方法,编译器将知道此类参数不需要初始值。

换句话说,你可以这样做:

int a;
CallSomeMethodWithOutParameter(out a);

并且编译器知道不需要确保a在拨打电话之前已经有一个值。

另一方面,如果没有该属性,则需要以下内容(同样在 C# 中):

int a = 0;                               // <-- notice initialization here
CallSomeMethodWithOutParameter(ref a);   // <-- and ref here

另一个目的是用于将被编组到不同调用上下文中的方法调用,例如通过 P/Invoke 编组到不同的应用程序域或 Web 服务,以通知编组例程相关参数将包含一个值当方法返回时,但调用方法时不需要向方法传递任何值。

当需要打包参数和返回值并将其传输到实际调用所经过的远程位置时,这可能会产生影响。

换句话说,如果您要指定在通过 P/Invoke 使用的方法调用上,则当该方法被调用时,不会对现有参数值进行编组。called,但是当该方法returns它的值被提升回您的调用代码中。

请注意,此优化取决于要使用或不使用的编组例程,这些是实现细节。该属性只是告诉例程它的参数can这样做,这并不是一条永远要遵循的指令。

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

属性。有什么有用的目的? 的相关文章

  • 如何将 Razor 视图转换为字符串?

    我想使用我的 Razor 视图作为某种发送电子邮件的模板 所以我想将我的模板 保存 在视图中 将其作为字符串读入控制器 进行一些必要的替换 然后发送它 我有有效的解决方案 我的模板作为 HTML 页面托管在某处 但我想将其放入我的应用程序中
  • 如何捕获一个 int

    我正在使用 IL 抛出一个 Int32 并捕获它 这只是出于好奇 我并没有试图实现任何目标 所以请不要告诉我抛出异常而不是 int method private hidebysig static void Main string args
  • 使用 XML 的 WCF 请求验证

    我有一个WCF使用 Net 4 0框架的SOAP Web服务 我在用contract first方法 即 服务代码是使用 WCSF Blue 工具从手写 WSDL 生成的 我对请求消息有以下要求 如果价格小于 100 则不得有税项 但如果大
  • 使用远程管理凭据将文件复制到远程计算机

    我正在使用 C 我需要能够将一组文件复制到大约 500 台不同的计算机上 我已成功地使用 LogonUser 方法来模拟具有复制文件所需权限的域帐户 文件的目标路径类似于 远程计算机 C SomeFolder 我的问题是 有没有办法做到这一
  • Inno Setup:验证是否已安装 .NET 4.0

    我有一个需要 NET 4 0 才能运行的组件 我的 Inno Setup 安装程序如何验证它是否已安装 如果没有 则提示用户安装它 The InitializeSetup运行 Inno Setup 可执行文件时调用该函数 为自定义脚本插入此
  • 限制 LDAP 查询中返回的属性

    如何限制通过 System DirectoryServices 在 LDAP 查询中返回的属性 我一直在使用 DirectorySearcher 并将我想要的属性添加到 DirectorySearcher PropertiesToLoad
  • 合并两个(或更多)PDF

    背景 我需要为我的销售人员提供每周报告包 该包包含几个 5 10 个水晶报告 Problem 我想允许用户运行所有报告并且只运行单个报告 我想我可以通过创建报告然后执行以下操作来做到这一点 List
  • 任务并行库周围是否有一个接口包装器,以便我可以将其交换用于单元测试?

    I asked 这个问题 https stackoverflow com questions 3362734 unit testing concurrent software what do you do不久以前 我现在知道这是一个坏主意
  • 如何创建可以像 UserControl 一样编辑的 TabPage 子类?

    我想创建一个包含一些控件的 TabPage 子类 并且我想通过设计器来控制这些控件的布局和属性 但是 如果我在设计器中打开子类 我将无法像在 UserControl 上那样定位它们 我不想创建一个带有 UserControl 实例的 Tab
  • 基于xsd模式生成xml(使用.NET)

    我想根据我的 xsd 架构 cap xsd 生成 xml 文件 我找到了这篇文章并按照说明进行操作 使用 XSD 文件生成 XML 文件 https stackoverflow com questions 6530424 generatin
  • 无法将类型“System.IO.Stream”隐式转换为“Java.IO.InputStream”

    我提到了一些类似的问题 但没有一个涉及IO 当我使用时 我在java中使用了相同的代码Eclipse 那次就成功了 但现在我尝试在中使用这段代码Mono for Android C 它不起作用 我正在尝试运行此代码来创建一个InputStr
  • .NET 字符串.替换

    我很生气 通常 我喜欢像 C 中那样进行替换 但是是否有一种 C 风格的替换 它一次仅替换一个字母或我指定的 X 数量 不 BCL 中不存在仅替换字符的单个实例的 Replace 方法 两个主要的 Replace 方法将替换所有出现的情况
  • vb6 中双精度计算的值不正确

    当在 vb6 中添加 2 个值时 我得到一些奇怪的行为 当在立即窗口中针对不同情况打印变量 sum 双精度型 时 如下所示 我得到的结果为 sum 0 sum 0 sum 0 sum 74 46 0 41 sum 74 87 sum 97
  • 将日期时间转换为时间

    我有一个对象 2 17 2011 6 46 01 PM 我想将此对象转换为 6 46 PM string myDateString 2 17 2011 6 46 01 PM DateTime datetime DateTime Parse
  • PhotoChooserTask 抛出未处理的异常

    我已经有了这段代码 我使用它来显示一个按钮 该按钮允许用户从他的库中选择图像并将其用作我的应用程序的背景 所以我创建了一个PhotoChooserTask 将其设置为显示相机并将其绑定到任务完成时必须执行的方法 该按钮将通过显示PhotoC
  • RegularExpressionValidator 限制输入长度而不限制字符类型

    我正在尝试使用RegularExpressionValidator验证一个TextBox输入长度 我可以使用它 但它只接受字母和数字 我想允许any个字符 唯一的检查是不超过 25 个字符
  • WebClient.DownloadDataAsync 冻结了我的 UI

    我在 Form 构造函数中的 InitializeComponent 之后有以下代码 using WebClient client new WebClient client DownloadDataCompleted new Downloa
  • .NET 程序集差异/比较工具 - 有什么可用? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我希望能够在两个程序集之间进行代码级差异 Reflector 的 Diff 插件是迄今为止我发现的最接
  • 在哪里可以下载没有 Visual Studio 2010 的 C# 4.0 编译器?

    我知道 CTP VS 2010 映像 但我可以只下载 NET Framework 4 0 和 C 编译器吗 AFAIK VS 2010 CTP 仅作为 VM 映像提供 我不相信 Microsoft 发布了 VS 的安装程序 其中一个绝对不适
  • 需要将用户名和密码添加到 VB.NET Web 服务客户端中的 SOAP 标头

    我需要查询一个进行基本身份验证的 Web 服务 将用户名和密码放在请求标头中 我的客户端是用 VB NET Visual Basic Express Edition 2010 编写的 我已将 Web 服务添加到服务引用中 它为我自动生成了合

随机推荐

  • 如何指定Qmake自动生成的资源文件?

    我有一个带有德语翻译的 Qt 项目 Translation de ts 自动编译成Translation de qm通过 Qmake TRANSLATIONS Translation de ts QMAKE EXTRA COMPILERS
  • Fluent-NHibernate 是否支持映射到过程?

    我一直想知道是否可以让 Fluent NHibernate 与已经存在的存储过程进行通信 并将结果集的映射分配给我自己的域对象 Fluent NHibernate 是否能够直接执行不返回结果集的过程 基本上 我一直在考虑使用 Fluent
  • Math.cos() 给出错误结果

    根据 Wolfram Mathematica 的说法 cos 50 0 6427876096865394 但是 Java 中的这段代码 System out println Math cos 50 gives 0 9649660284921
  • SongsController#index 中的 NameError 未初始化常量 Song::FriendlyId

    所以 我有一个应用程序 用户可以在其中进行大量的社交分享 因此 链接必须看起来很漂亮 我已经安装了友好 ID 宝石 http rubydoc info github norman friendly id master 但似乎收到此错误 Na
  • SQL Server:为第 1 列中的每个唯一值插入一个新行

    使用 SQL Server 我尝试查找表的第 1 列中的每个唯一值 然后使用该唯一的第 1 列值插入新行并添加第 2 列值 第 2 列的值每次都相同 需要注意的是 我可以通过从第 1 列的数据库中提取唯一值并为每个值添加一个插入来完成此操作
  • Delphi XE4 iOS 应用程序可以在模拟器上运行,但不能在调试设备上运行

    我让应用程序在加载应用程序时显示其指定的背景图像 然后在启动时运行此代码会崩溃 unzip own resources like images data files ettc FAppDataDirPath GetHomePath Path
  • iOS 自毁单例设计模式

    我最近遇到一个问题 其中我只希望特定对象存在一个实例 并且仅存在执行特定操作所需的短暂时间 它的操作是异步的 因此如果我没有保存对它的引用 ARC 会在运行循环结束时释放它 如果我确实保留它 我将需要委托回调或通知来知道何时完成释放它 该对
  • Python EXIF找不到拍摄日期信息,但通过Windows属性查看时存在

    我需要按拍摄日期提取和组织照片 Windows 10 Python 2 7 我一直在这样做 from PIL import Image def get date taken path return Image open path getex
  • 这个_popen / select示例有什么问题?

    UPDATE 我更新了代码和问题描述以反映我的更改 我现在知道我正在尝试对非套接字进行套接字操作 或者我的 fd set 无效 因为 select返回 1 和WSAGetLastError 返回 10038 但我似乎无法弄清楚它是什么 平台
  • WebGrid 的标头格式

    我刚刚读到 http www mikesdotnetting com Article 154 Looking At The WebMatrix WebGrid http www mikesdotnetting com Article 154
  • CFUUID 对比广告标识符对比供应商标识符

    我很困惑应该使用什么来唯一标识我的用户 我也想支持 iOS 7 但我不明白其中的区别 我目前正在使用此代码片段生成 UUID CFUUIDRef udid CFUUIDCreate NULL NSString createdUUID NSS
  • HTML5 中是否可以有多个 data-{name} 属性?

    有没有办法从这个元素获取所有 3 个数据值 div 这对于我正在启动的项目非常有用 这样我就可以加载所需的 js 模块并将它们链接到 dom 我知道这可能听起来很奇怪 但我正在尝试一些新的东西 您的问题的答案是 HTML 不支持同一属性的多
  • 三柱布局 侧柱弹性中间固定

    我想知道是否有人知道如何使居中 div 具有固定宽度 并在居中 div 的两侧具有右侧和左侧 div 弹性 居中的 div 也具有 min width 和 max width css 属性 尝试添加您在发布问题时尝试过的代码 HTML di
  • SignalR 跨域不适用于 IE10 以外的浏览器

    我正在使用 SignalR 跨域通信编写一个网络应用程序 我正在使用最新版本的 SignalR 1 0 1 以下是 jQuery 的文档就绪事件中的代码 var connection hubConnection url var proxy
  • 如何在实时添加对象时从 Redis 中弹出对象?

    我想让 Node js 进程运行 因为它正在检查 Redis 服务器是否有任何新的弹出内容 另一个进程将偶尔进行推送 而 Node 进程将尝试弹出任何进来的内容 Node 进程将保持运行 有人能给我指出一个好的方向吗 我正在尝试找出如何监听
  • 在 C 中访问嵌套结构中的项目

    我尝试访问另一个结构中的 下一个 但失败了 尽管我尝试了很多方法 这是嵌套结构 struct list head struct list head next prev typedef struct char key char value s
  • 从 django 中的 url 获取应用程序名称

    我知道如何在 django 中使用 url 解析来获取 url 名称 我想以类似的方式处理来自某个应用程序的所有请求 所以我想我可以通过从 url 获取应用程序名称来做到这一点 我怎样才能做到这一点 路径你会很头痛 因为你必须应用很多分割
  • [ valueForUndefinedKey:]:此类对于键 AppointmentDate 不符合键值编码。 - 迅速

    我想对对象数组进行排序 下面是我对对象数组进行排序的函数 class func Fn SortByParameter arrayToSort NSMutableArray paramName NSString isAscending Boo
  • 四舍五入到 0.5

    我有一个结果 1 444444 我想将此结果舍入为 1 5 这是我使用的代码 a text String round 13000 9000 0 但这是四舍五入到 1 0 我需要四舍五入到 1 5 和这段代码 a text String ce
  • 属性。有什么有用的目的?

    Under System Runtime InteropServices the