首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C#函数可不可以返回一个数组类型?解决方法

2012-01-08 
C#函数可不可以返回一个数组类型?各位好,小弟想问大家一个问题,就是C#函数可不可以返回一个数组类型,如pub

C#函数可不可以返回一个数组类型?
各位好,小弟想问大家一个问题,就是C#函数可不可以返回一个数组类型,如
public   string[]   StorageInfo   CanLogin(string   T_UserName,   string   T_UserPassword)
{

}
通过该函数返回一个数组,不知道可不可以,请知道的告诉我,谢谢!


[解决办法]
可以的
任何object都可以作为返回值类型的
[解决办法]
//可以,做下测试就知道了

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 ", "路过 "));
}

[解决办法]
恩 可以.来点分.
[解决办法]
既然知道了 那就接分了
[解决办法]
接分了
[解决办法]
这个在C#里面是很简单就能实现的,因为数组在C#里是引用类型是可以返回修改后的值的,所以你在传参数的时候传多一个数组进去,如下

public void StorageInfo CanLogin(string T_UserName,string T_UserPassword,string[] str) 




因为是引用类型,所以在方法体执行完操作后放到该参数(数组)的值就会被带回,这样值就被返回出去的了
[解决办法]
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) {}

[解决办法]
但是如果把string[] 改为object则可以直接传递 
public void CanLogin(string username, string passwrod, object[] objs) {} 
--------------
如果方法体内重置了该数组你猜结果是什么?
[解决办法]
在方法体里重载该数组就会报错,但是我不明白你为何要重载它 但在这点上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();

}
[解决办法]
可以...
这个就是读取图片二进制流,传数组...

C# code
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;    }} 

热点排行