所以字符串是引用类型的权利?我的理解是,即使将字符串ByVal传递给方法,也会传递堆中字符串的引用。在VB.NET和C#中传递字符串ByVal#
的sooo .....
String myTestValue = "NotModified";
TestMethod(myTestValue);
System.Diagnostics.Debug.Write(myTestValue); /* myTestValue = "NotModified" WTF? */
private void TestMethod(String Value)
{
Value = "test1";
}
或者
Dim myTestValue As String = "NotModified"
TestMethod(myTestValue)
Debug.Print(myTestValue) /* myTestValue = "NotModified" WTF? */
Private Sub TestMethod(ByVal Value As String)
Value = "test1"
End Sub
我缺少什么?那么发生了什么?我会赌我的生命值会改变....
我推荐阅读这篇文章:http://www.yoda.arachsys.com/csharp/parameters.html和重复问题的答案。 – 2011-03-02 04:04:57
哇,我完全不明白这一点。 “myTestValue”怎么可能改变?它没有被修改?你觉得你怎么修改它? – Stan 2011-03-02 04:07:52
@Stan:人们非常(非常)经常混淆传递引用和传递*引用类型*的值。 – 2011-03-02 04:26:35