各位好,小弟想问大家一个问题,就是C#函数可不可以返回一个数组类型,如
public string[] StorageInfo CanLogin(string T_UserName, string T_UserPassword)
{}
通过该函数返回一个数组,不知道可不可以,请知道的告诉我,谢谢!

解决方案 »

  1.   

    哈哈,不好意思,是可以的,是我自己写错了,应该把StorageInfo这个去掉
      

  2.   

    可以的
    任何object都可以作为返回值类型的
      

  3.   

    //可以,做下测试就知道了public string[] StorageInfo(string T_UserName, string T_UserPassword)
    {
        return new string[] { T_UserName, T_UserPassword };
    }private void button1_Click(object sender, EventArgs e)
    {
        Text = string.Join(",", StorageInfo("Zswang", "路过"));
    }
      

  4.   

    这个在C#里面是很简单就能实现的,因为数组在C#里是引用类型是可以返回修改后的值的,所以你在传参数的时候传多一个数组进去,如下public   void   StorageInfo   CanLogin(string   T_UserName,string   T_UserPassword,string[] str
    { } 因为是引用类型,所以在方法体执行完操作后放到该参数(数组)的值就会被带回,这样值就被返回出去的了
      

  5.   

    楼上...饭可以乱说话不能乱讲...因为是引用类型,所以在方法体执行完操作后放到该参数(数组)的值就会被带回,这样值就被返回出去的了
    -----------
    这句话是谁告诉你的?那请问out参数是干什么用的?
      

  6.   

    string 属于基本数据类型,也是基本数据类型中唯一的引用类型,所以它具有它的特殊性,简单来说在参数传递中它可以有值类型的效果,它仅仅对相同的字符串给予相同的引用。如果想在参数中传递并改变该参数的时候,必须加ref或者out, 而真正的引用类型是可以直接传递而不需要ref或者out标识,例如object。public void CanLogin(string T_UserName, string T_UserPassword, string[] str) {} 是不能带出来的
    public void CanLogin(string username, string password, ref string[] str) {} 或者out才是正确的但是如果把string[] 改为object则可以直接传递
    public void CanLogin(string username, string passwrod, object[] objs) {}
      

  7.   

    但是如果把string[]   改为object则可以直接传递 
    public   void   CanLogin(string   username,   string   passwrod,   object[]   objs)   {} 
    --------------
    如果方法体内重置了该数组你猜结果是什么?
      

  8.   

    11楼 你才不要乱说,我是试过的,因为数组是引用类型所以可以直接带回修改后的值,使用out关键字修饰参数只是用来带回值的又一种方法而已static public void s(string[] a)
            {
                a[1] = "abc";
            }
            static public void s(int[] b)//重载方法S
            {
                b[1] = 111;
            }
            static void Main(string[] args)
            {
                string[] str = new string[] { "aaa","bbb"};
                int[] t = new int[] {123,456 };
                Console.WriteLine(str[1]);//bbb
                Console.WriteLine(t[1].ToString());//456
                s(str);//数组名实质就是指针常量
                s(t);
                Console.WriteLine(str[1]);//abc
                Console.WriteLine(t[1].ToString());//111
                Console.ReadLine();
            }
      

  9.   

    11楼   这里是string[] 而不是 string 这两个是不同的
      

  10.   

    在方法体里重载该数组就会报错,但是我不明白你为何要重载它 但在这点上vrhero 你确实说的对,那不是很好的方法,下面的方法更好楼主这应该就是你要的答案了
     static public string[] s()
            {
                string[] str = new string[] { "aaa", "bbb" };
                return str;
            }        static void Main(string[] args)
            {
                string[] ss =s();//把返回的值赋给ss
                foreach(string tt in ss)
                Console.WriteLine(tt);//依次显示数组元素里的值
                Console.ReadLine();
               
            }
      

  11.   

    可以...
    这个就是读取图片二进制流,传数组...using System;
    using System.Data;
    using System.Data.SqlClient;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using System.Collections;
    using System.IO;
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            byte[] temp1 = getImage("d://1.jpg");
            byte[] temp2 = getImage("d://2.jpg");
            bool isEqual = true;
            //判断图片是否相等
            if (temp1.Length == temp2.Length)
            {
                for (int i = 0; i < temp1.Length; i++)
                {
                    if (temp1[i] != temp2[i])
                    {
                        isEqual = false;
                    }
                }
            }
            else
            {
                isEqual = false;
            }
            if (isEqual)
            {
                Response.Write("<script>alert('两图片相等')</script>");
            }
            else
            {
                Response.Write("<script>alert('两图片不相等')</script>");
            }
        }
        /// <summary>
        /// 按图片路径把图片打成二进制流
        /// </summary>
        /// <param name="path">图片路径</param>
        /// <returns></returns>
        public byte[] getImage(string path)
        {
            FileStream fs = File.OpenRead(path);
            MemoryStream ms = new MemoryStream();
            int bdata;
            while ((bdata = fs.ReadByte()) != -1)
            {
                ms.WriteByte(((byte)bdata));
            }
            byte[] data = (byte[])ms.ToArray();
            fs.Close();
            ms.Close();
            fs = null;
            ms = null;
            return data;
        }
    }
      

  12.   

    to onsson:try...static public string[] s()

        str = new string[] {"aaa", "bbb"};
        return str;
    }是重置数组...经常会用到的...
      

  13.   

    错了...是这样...static public string[] s(string[] str)

        str = new string[] {"aaa", "bbb"};
        return str;
    }
      

  14.   

    还是错了...应该是这样...你把我都搞晕了...呵呵...
    static public void s(string[] str)

        str = new string[] {"aaa", "bbb"};
    }
      

  15.   

    为什么下面的函数总是报错?
     // 设置DataGrid列标题和宽度-----------------
            public DataGridTextBoxColumn[] SetGridStyle(string[] CNames, string[] Titles, int[] cWidth)
            {
                
                int n = CNames.Length;             DataGridTextBoxColumn[] cols = new DataGridTextBoxColumn[n];
                
                for (int i = 0; i < n; i++)
                {
                    cols[i].MappingName = CNames[i];
                    cols[i].HeaderText = Titles[i];
                    cols[i].Width = cWidth[i];
                    MessageBox.Show(n.ToString());
                   // dts.GridColumnStyles.Add(cols[i]);
                }            return cols;
            }