如何在C#中传递字符串?
如何将字符串变量作为参数传递给用C#编写的程序中的方法/过程/函数?
答案 0 :(得分:5)
SomeFunction("arg1", "arg2");
或作为变量:
string arg1 = "some value 1";
string arg2 = "some value 2";
SomeFunction(arg1, arg2);
答案 1 :(得分:4)
字符串类为immutable。所以你不能做到以下几点:
private void MyFunction()
{
string myMessage = "Just a message";
ManipulateMessage(myMessage);
Console.WriteLine(myMessage);
}
private void ManipulateMessage(string message)
{
message = DateTime.Now + " " + message;
}
要使其工作,您必须传回字符串:
private void MyFunction()
{
string myMessage = "Just a message";
myMessage = ManipulateMessage(myMessage);
Console.WriteLine(myMessage);
}
private string ManipulateMessage(string message)
{
return DateTime.Now + " " + message;
}
或使用StringBuilder
private void MyFunction()
{
StringBuilder myMessage = "Just a message";
ManipulateMessage(myMessage);
Console.WriteLine(myMessage.ToString());
}
private void ManipulateMessage(StringBuilder message)
{
message.Insert(0, DateTime.Now + " ");
}
好的,有第三个版本使用ref关键字
private void MyFunction()
{
string myMessage = "Just a message";
ManipulateMessage(ref myMessage);
Console.WriteLine(myMessage);
}
private void ManipulateMessage(ref string message)
{
message = DateTime.Now + " " + message;
}
答案 2 :(得分:2)
你的意思是一种方法:
public bool SomeMethod(string inputString)
{
// do stuff
return true;
}
然后打电话给:
string testString = "Here is some text";
if (SomeMethod(testString))
{
// do stuff
}
答案 3 :(得分:0)
string theString = "These are the contents";
SomeOtherFunction(theString);
答案 4 :(得分:0)
如果您因为Delphi等其他语言中的字符串处理而提出这个问题,那就好奇了?
C#中的字符串是不可变的(正如其他人所说的那样)所以对字符串的任何更改都会为“新”字符串分配内存,而“旧”字符串最终会被垃圾回收。这意味着编译器不会生成代码以确保在方法返回时减少引用计数 - 或任何那些很酷的东西。
您也可以通过引用传递它(请参阅example 6)
...
string myLittleString = "something";
PassToMe(ref myLittleString);
...
void PassToMe(ref string takenIn)
{ //some code here }
但如果您要更改方法内的字符串(因为字符串是不可变的),这将没有多大区别。如果您打算对传递的字符串进行大量更改,最好使用StringBuilder
IMO。