你如何在C#中传递字符串?

时间:2010-04-01 07:32:07

标签: c# string

如何在C#中传递字符串?

如何将字符串变量作为参数传递给用C#编写的程序中的方法/过程/函数?

5 个答案:

答案 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 + "   ");
}

KMan评论后更新

好的,有第三个版本使用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。