VB.NET 没有out
参数,但您可以指定<Out()> ByRef
COM 和 P/Invoke 方法以获得与外部方法相同的效果。
在内部方法上指定相同的方法(即仅由 .NET 代码调用的方法)实际上有助于 Jitter(或 VB.NET 编译器)吗?或者它目前仅用作程序员笔记。
是否有可能在将来的 Jitter 中使用,或者在编译时该属性会丢失?
我已经确认 VB.NET<Out()>
确实会导致 C# 客户端需要out
参数,所以它看起来确实是一样的。
此外,C# 客户端将其带有当前值的参数传递给方法,但这并不奇怪,因为与 COM 或 P/Invoke 情况不同,无需进行编组。(而且 C# 不允许通过out
参数直接设置属性,因此似乎没有办法查看 C# 是否会优化掉以前不需要的赋值。)
所以看起来答案是它确实有助于未来可能的 C# 客户端使用代码,如果抖动曾经调整 C# 等效项,它会在这里做同样的事情。虽然因为存在像 VB 这样的语言,但它不能做很多事情,因为它们本身不尊重Out
属性。
我MembershipProvider
使用 VB 类进行子类化,我们将其称为 A,然后使用 C# 类对 A 进行子类化,我们将其称为 B。C# 代码 B 没有认识到其中的抽象方法MembershipProvider
已经在VB 子类 A,直到我在 VB 类中应用了在基类抽象方法OutAttribute
中指定的参数。这不仅仅是 COM 或 P/Invoke 的影响。out
MembershipProvider