刚刚回答了一个关于用括号调用VB6方法的问题,我记得你可以强制ByRef传递参数值ByVal.研究,我发现这仍然适用于VB.NET.
但是,我在C#中找不到类似的东西.在过去的一年里,我不得不引用很多ByRef没有任何理由的VB.NET类库(相信我,我检查过).这迫使我将对象的属性设置为局部变量以传递它们.不是一个主要问题,但如果你问我不是很干净.
我想知道是否有一个我不知道的语法解决方案.
作为我当前模式的一个例子,我想避免:
var tempSomeObject = BarObject.FooProperty;
SomeVb6BusinessLogicMethod(ref tempSomeObject);
// Continue to do work and set other temp objects due to ref constraint
Run Code Online (Sandbox Code Playgroud)
在VB6和VB.NET中,您只需执行以下操作即可在ByRef参数上强制使用ByVal.
SomeVb6BusinessLogicMethod((BarObject.FooProperty)) 'Note the extra parens
Run Code Online (Sandbox Code Playgroud)
编辑:我不是在询问ByRef和ByVal之间的区别.我问C#是否有类似的方法强制ByRef参数传递ByVal.请参阅此VB.NET功能的MSDN文档. http://msdn.microsoft.com/en-us/library/chy4288y.aspx
您将需要将值显式复制到新变量并通过引用传递新变量,如您在问题中所示.C#中没有语法糖,允许编译器代表您执行此副本,就像在VB中一样.