9

VB.NET 没有out参数,但您可以指定<Out()> ByRefCOM 和 P/Invoke 方法以获得与外部方法相同的效果。

在内部方法上指定相同的方法(即仅由 .NET 代码调用的方法)实际上有助于 Jitter(或 VB.NET 编译器)吗?或者它目前仅用作程序员笔记。

是否有可能在将来的 Jitter 中使用,或者在编译时该属性会丢失?

4

2 回答 2

9

我已经确认 VB.NET<Out()>确实会导致 C# 客户端需要out参数,所以它看起来确实是一样的。

此外,C# 客户端将其带有当前值的参数传递给方法,但这并不奇怪,因为与 COM 或 P/Invoke 情况不同,无需进行编组。(而且 C# 不允许通过out参数直接设置属性,因此似乎没有办法查看 C# 是否会优化掉以前不需要的赋值。)

所以看起来答案是它确实有助于未来可能的 C# 客户端使用代码,如果抖动曾经调整 C# 等效项,它会在这里做同样的事情。虽然因为存在像 VB 这样的语言,但它不能做很多事情,因为它们本身不尊重Out属性

于 2011-07-20T10:33:07.917 回答
1

MembershipProvider使用 VB 类进行子类化,我们将其称为 A,然后使用 C# 类对 A 进行子类化,我们将其称为 B。C# 代码 B 没有认识到其中的抽象方法MembershipProvider已经在VB 子类 A,直到我在 VB 类中应用了在基类抽象方法OutAttribute中指定的参数。这不仅仅是 COM 或 P/Invoke 的影响。outMembershipProvider

于 2014-03-10T14:31:48.103 回答