class Program
{
private string str = "str";
private int i = 0;
static void ConvertString(string str)
{
str = "str has convert";
}
static void ConvertString(ref string str)
{
str = "str has convert";
}
static void ConvertString(Program c)
{
c.str = "str has convert";
}
static void Add(int i)
{
i++;
}
static void Add(Program c)
{
c.i++;
} static void Main(string[] args)
{
string str = "strTmp";
int i = 20;
Program c = new Program();
Add(i);
Add(c);
Console.WriteLine(i);
Console.WriteLine(c.i);
ConvertString(str);
Console.WriteLine(str);
ConvertString(ref str);
Console.WriteLine(str);
ConvertString(c);
Console.WriteLine(c.str);
Console.Read();
}
}说下他的运行结果,别忘了说下理由哦
{
private string str = "str";
private int i = 0;
static void ConvertString(string str)
{
str = "str has convert";
}
static void ConvertString(ref string str)
{
str = "str has convert";
}
static void ConvertString(Program c)
{
c.str = "str has convert";
}
static void Add(int i)
{
i++;
}
static void Add(Program c)
{
c.i++;
} static void Main(string[] args)
{
string str = "strTmp";
int i = 20;
Program c = new Program();
Add(i);
Add(c);
Console.WriteLine(i);
Console.WriteLine(c.i);
ConvertString(str);
Console.WriteLine(str);
ConvertString(ref str);
Console.WriteLine(str);
ConvertString(c);
Console.WriteLine(c.str);
Console.Read();
}
}说下他的运行结果,别忘了说下理由哦
1
strTmp
str has convert
str has convert奖品拿来:)
int i = 20;
Program c = new Program();
Add(i); //按值传递值类型,增加的i是Add里的局部变量i,和Main函数里的i无关
Add(c);//按值传递引用类型 增加的c和Main函数里的c指向同一对象,所以一改都改
Console.WriteLine(i);
Console.WriteLine(c.i);
ConvertString(str); // 传递的是引用的副本
Console.WriteLine(str);
ConvertString(ref str);// 传递引用本身
Console.WriteLine(str);
ConvertString(c);
Console.WriteLine(c.str);
Console.Read();
ConvertString(str);
Console.WriteLine(str);//输出strTmp --(传值参数,不改变原值)
ConvertString(ref str);
Console.WriteLine(str);//输出str has convert --(传引用,对原值修改)
ConvertString(c);
Console.WriteLine(c.str);//输出str(传值,不改变原值,对象c的str初始值是str)