C#中的string 不是引用型的吗?

来源:百度知道 编辑:UC知道 时间:2024/05/30 19:47:34
看下面的程序:
public class Class1
{
private string str = "Class1.str";
private int i = 0;
static void StringConvert(string str)
{
str = "string being converted.";
}
static void StringConvert(Class1 c)
{
c.str = "string being converted.";
}
static void Add(int i)
{
i++;
}
static void AddWithRef(ref int i)
{
i++;
}
static void Main()
{
int i1 = 10;
int i2 = 20;
string str1 = "str";
Class1 c = new Class1();

Add(i1);
AddWithRef(ref i2);
Add(c.i);
StringConvert(str1);
StringConvert(c);
C

为了解释这个问题,我特意写了如下代码:

class Program
{
static void Main(string[] args)
{
Person p = new Person("Allen Lee");
Console.WriteLine(p.Name);
ChangePerson(p, "Martin Ko");
Console.WriteLine(p.Name);

Console.WriteLine();

string text = "Original Text";
Console.WriteLine(text);
ChangeText(text);
Console.WriteLine(text);
}

static void ChangePerson(Person p, string name)
{
p = new Person(name);
}

static void ChangeText(string text)
{
text = "Changed Text";
}
}

class Person
{
public Person(string name)
{
m_Name = name;
}

private string m_Name;
public string Name
{
get { return m_Name; }