在ByRef内部方法上指定OutAttribute当前是做什么的吗?

时间:2011-07-19 08:17:04

标签: vb.net out byref

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

在内部方法上指定相同的方法(即仅由.NET代码调用的方法)是否真的有助于Jitter(或VB.NET编译器)?或者它目前仅作为程序员注释使用。

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

2 个答案:

答案 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应用了outMembershipProvider的参数。 {1}}基类抽象方法。这不仅仅是COM或P / Invoke的影响。