using System;public class ValandRef
{

public static void display(string[] str)
{
str[0]="www.hao.com";
string[] tt=new string[]{"1","2"};
}
public static void Main()
{
string[] c=new string[]{"www.163.com","www.126.com"};
ValandRef.display(c);
Console.WriteLine(c[0]);
Console.WriteLine(c[1]);
}
}
这显然是按值传引用,但书上又说,数组是按引用传的

解决方案 »

  1.   

    数组按地址引用.
    private void button1_Click(object sender, System.EventArgs e)
    {
    string[] ss = new string[2];
    ss[0] = "Init0";
    ss[1] = "Init1";
    MessageBox.Show( ss[0] + "\r\n" + ss[1] ); // 显示Init0
    //     Init1 this.ClearDim( ss );
    MessageBox.Show( ss[0] + "\r\n" + ss[1] ); // 显示Now Cleared0
    //     Now Cleared1 this.FillDim( ss );
    MessageBox.Show( ss[0] + "\r\n" + ss[1] ); // 显示Now Filled0
    //     Now Filled1
    }private void ClearDim( string[]  ss ) 
    {
    ss[0] = "Now Cleared0";
    ss[1] = "Now Cleared1";
    }
    private void FillDim( string[] ss ) 
    {
    ss[0] = "Now Filled0";
    ss[1] = "Now Filled1";
    }
      

  2.   

    是你自己没想清楚,你这个例子修改一下就很好,因为结果是:"www.hao.com"
    "www.126.com"
    而这样
    public static void display(string[] str)
    {
    str[0]="www.hao.com";
    string[] tt=new string[]{"1","2"};
    }
    我真的不知道该怎么说,这个tt与str或者c有任何关系吗?!
      

  3.   

    结果
    www.hao.com
    www.126.com
    明显是引用
      

  4.   

    楼主 我做一个测试  
    看下面的代码,应该理解什么是引用了 protected void Button1_Click(object sender, EventArgs e)
        {
            string[] st = new string[] { "ASP.NET1","ASP.NET2"};
            this.ChageData(st);        Response.Write(st[0]);
            Response.Write(st[1]);        int t = 3;
            this.ChageData(t);
            Response.Write(t);
            
        }
        public void ChageData(string[] strs)
        {
            strs[0] = "ASP.NET";
            strs[1] = "ASP.NET 5.x";
        }
        public void ChageData(int t)
        {
            t = 7;
        }值类型的int ChangData后 输出还是原来的3 
    但是引用类型的 就是改变了原来的值,他没有copy副本,就在原来的地址上更改了对象,因此输出就变了。
      

  5.   

    c#数组按引用方式传递的。 
    tt与str好像是没有任何关系吧!
    不知道楼主是怎么理解的
      

  6.   

    string 是特殊的引用类型
    里面的值一但确定,是不会改的,相当于c中的const char *(LPCSTR)
    用string builder 吧