C# – 为什么在通过方法后没有改变这个变量
所以我显然对编程很新,但我想弄清楚为什么这不起作用
我正在尝试使用字符串myname,并将Mr.添加到它的开头。 我知道我可以简单地将其作为myname = "Mr. " + myname
但我试图了解如何使用方法来更改变量的值。 那么,为什么这不会改变呢?
public class Program { public static void Main(string[] args) { string myname = "harry"; Console.WriteLine(myname); //output is harry namechanger(myname); //this should modify harry to Mr. Harry Console.WriteLine(myname); //output is still harry? } static string namechanger(string name) { name = "Mr. " + name; return name; } }
字符串是不可变的 ,并且通过值传递 。 每次创建字符串时,都不会更改。 因此,与类的实例不同,您不能通过将字符串交给修改它的方法来修改字符串。
在这种情况下,由于您在namechanger
return
已修改的String,因此您需要做的就是确保将myname
分配给该方法的结果; 像这样
myname = namechanger(myname);
原始类型( int
, float
, long
等)就像struct
实例一样工作 – 所以一定要在将来查找它,如果你不确定为什么结构的值在你传递给它时没有改变方法。
- 部分视图中的ASP.NET MVCvalidation并返回到父视图
- 使用LINQPad将数据插入到SQL CE数据库中,Linq-to-sql随着时间的推移变得越来越慢,我能做些什么呢?
- Parallel.For(Foreach)将创建多少个线程? 默认MaxDegreeOfParallelism?
- 从互联网上的txt文件中获取文本
- C#控制台/服务器访问网站
- 为什么VS 2008不在Intellisense中为String类显示扩展方法
- C#浮动bug? 0.1 – 0.1 = 1.490116E-08
- ObjectListView将图像添加到项目/对象
- JitIntrinsicAttribute如何影响代码生成?