【问题标题】:What's the difference between [Out] and out in C#? [duplicate]C# 中的 [Out] 和 out 有什么区别? [复制]
【发布时间】:2013-05-30 12:16:06
【问题描述】:

我在查找 P/Invoke 定义时看到了这两种情况...有时使用[Out],有时使用out...我假设它们是相同的。

【问题讨论】:

  • out[out] 都是等价的,都告诉编译器对象将在函数内部初始化。
  • 这里有错误的答案,看看重复的。
  • 我想这里的答案是否可以被认为是正确的取决于你对“等效”的定义有多放松。 This answer 建议我不应该掩盖这些差异。

标签: c# out


【解决方案1】:

P/Invoke 的上下文中使用时,它们是等价的 - 请参阅 OutAttribute

您可以将 OutAttribute 应用于通过引用传递的值和引用类型,以将 In/Out 行为更改为 Out-only 行为,这相当于在 C# 中使用 out 关键字。

【讨论】:

  • 需要注意的是,它们仅在 P/Invoke 和 COM 互操作上是等价的,在其他情况下也不一样。
  • @marceln 为了清楚起见,我已经更新了。
【解决方案2】:

除了 James 的回答,请注意 out 上下文关键字用于两种上下文:

  • 作为参数列表中的参数修饰符

  • 在接口和委托中的泛型类型参数声明中

来源:http://msdn.microsoft.com/en-us/library/t3c3bfhx.aspx

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-11
    • 2013-01-08
    • 2010-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多