有没有办法强制参数在C#中传递值而不是在C#中传递?

时间:2014-10-09 17:55:48

标签: c# vb.net

刚刚回答了一个关于用括号调用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

在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

1 个答案:

答案 0 :(得分:5)

您需要将值显式复制到新变量并通过引用传递新变量,如您在问题中所示。 C#中没有语法糖,允许编译器代表您执行此副本,就像在VB中一样。

相关问题