class Program
{
static void Main(string[] args)
{
string s1 = "zhang";
string s2 = "chong"; object o1 = s1, o2 = s2;
Swap( o1, o2); s1 = (string)o1;
s2 = (string)o2; Console.WriteLine(s1);
Console.WriteLine(s2);
Console.ReadKey(); }
public void Swap( object a, object b)
{
object t = b;
b = a;
a = t;
}
}string和object不都是引用类型吗?他们应该可以交换值的啊...这个程序怎么没有交换?必须用ref out???
{
static void Main(string[] args)
{
string s1 = "zhang";
string s2 = "chong"; object o1 = s1, o2 = s2;
Swap( o1, o2); s1 = (string)o1;
s2 = (string)o2; Console.WriteLine(s1);
Console.WriteLine(s2);
Console.ReadKey(); }
public void Swap( object a, object b)
{
object t = b;
b = a;
a = t;
}
}string和object不都是引用类型吗?他们应该可以交换值的啊...这个程序怎么没有交换?必须用ref out???
public class SampleRefType
{
public int value;
public static void Main()
{
SampleRefType rt = new SampleRefType();
rt.value = 44;
ModifyObject(rt);
Console.WriteLine(rt.value);
}
static void ModifyObject(SampleRefType obj)
{
obj.value = 33;
}}
这个程序又可以交换参数......class....
例如:
string str = "123";
string str1 = str;
str1= "234";//str 这里并没有变
在swap(object a,object b)方法中,属于引用传递,只是将地址传给a和b,a和b的值发生交换后,随着方法的结束,a和b的生命周期也随之结束,因而在main方法中的值没有被影响到