刚刚回答了一个关于使用括号调用VB6方法的问题,我记得你可以强制将ByRef参数值传递为ByVal。查询后,我发现这在VB.NET中仍然有效。
然而,在C#中,我找不到类似的解决方案。去年,我不得不引用许多没有充分理由要求传入ByRef的VB.NET类库(相信我,我已经检查过了)。这迫使我将对象属性设置为本地变量以便传递它们。虽然不是很严重,但如果你问我,这并不是很干净的做法。
我想知道是否有语法解决方案我不知道的情况。
以下是我当前模式的示例,我希望避免这种模式:
在VB6和VB.NET中,您只需执行以下操作即可强制对ByRef参数使用ByVal。
然而,在C#中,我找不到类似的解决方案。去年,我不得不引用许多没有充分理由要求传入ByRef的VB.NET类库(相信我,我已经检查过了)。这迫使我将对象属性设置为本地变量以便传递它们。虽然不是很严重,但如果你问我,这并不是很干净的做法。
我想知道是否有语法解决方案我不知道的情况。
以下是我当前模式的示例,我希望避免这种模式:
var tempSomeObject = BarObject.FooProperty;
SomeVb6BusinessLogicMethod(ref tempSomeObject);
// Continue to do work and set other temp objects due to ref constraint
在VB6和VB.NET中,您只需执行以下操作即可强制对ByRef参数使用ByVal。
SomeVb6BusinessLogicMethod((BarObject.FooProperty)) 'Note the extra parens
编辑:我不是在询问ByRef和ByVal之间的区别。我想知道C#是否有类似的方式来强制将ByRef参数传递为ByVal。请参阅此VB.NET功能的MSDN文档。
http://msdn.microsoft.com/en-us/library/chy4288y.aspx