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