我知道C#中的"string"是一个引用类型.这是在MSDN上.但是,此代码不能正常工作:
class Test
{
public static void Main()
{
string test = "before passing";
Console.WriteLine(test);
TestI(test);
Console.WriteLine(test);
}
public static void TestI(string test)
{
test = "after passing";
}
}
Run Code Online (Sandbox Code Playgroud)
输出应该在"传递之前""传递之后",因为我将字符串作为参数传递并且它是引用类型,第二个输出语句应该识别在TestI方法中更改了文本.但是,我在"通过之前""在通过之前"得到它似乎是通过值传递而不是通过ref.我知道字符串是不可变的,但我不知道这将如何解释这里发生的事情.我错过了什么?谢谢.
对于以下代码,我无法开始string.Replace工作:
someTestString.Replace(someID.ToString(), sessionID);
Run Code Online (Sandbox Code Playgroud)
当我调试并检查参数时,它们具有我期望的值 - 即someID.ToString()得到"1087163075",并且sessionID具有"108716308"并someTestString包含"1087163075".
我不知道为什么这不会改变 someTestString
完整样本:
string someTestString =
"<a href='myfoldert/108716305-1.jpg' target='_blank'>108716305-1.jpg</a>"
someTestString.Replace("108716305", "NewId42");
Run Code Online (Sandbox Code Playgroud)
结果(in someTestString)应该是这样的:
"<a href='myfoldert/NewId42-1.jpg' target='_blank'>NewId42-1.jpg</a>"
Run Code Online (Sandbox Code Playgroud)
但它没有改变.someTestString在命中我的代码后,字符串保持不变.