读书人

做个标题做对的有奖

发布时间: 2011-12-26 23:09:58 作者: rapoo

做个题目,做对的有奖
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();
}
}

说下他的运行结果,别忘了说下理由哦

[解决办法]
20
1
strTmp
str has convert
str has convert

奖品拿来:)
[解决办法]
ConvertString(string str) // 虽说是按引用传递,但传的是引用的副本

static void ConvertString(ref string str) // 传引用本身,这才是真正的 C/C++ 意义上的指针传递
[解决办法]
string str = "strTmp ";
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();
[解决办法]
考察了:
静态的概念
值类型
引用类型

读书人网 >C#

热点推荐