头晕脑涨地研究了一天,就为了实现C#函数的参数返回结构数组。
现供大家分享,节省学习时间。
C#函数的参数返回结构数组实例:
- ///<summary>
- ///用户信息结构
- ///summary>
- publicstructTUSER
- {
- publicstringLoginName;
- publicstringLoginPass;
- publicstringTrueName;
- publicstringEMail;
- publicintLevel;
- }
- ///<summary>
- ///获得所有注册用户
- ///summary>
- ///<paramnameparamname="USERINFO">返回用户信息结构param>
- publicboolGetUsers(outTUSER[]G_USERINFO)
- {
- USEROP.TUSER[]f_TUSER;
- intCurRec=0;//初始化记录计数器
- intrec_count=0;//计算总记录数
- SqlConnectionmyConn=newSqlConnection(connectionString);
- stringcmd="select*from"+m_Table;//SQL查询语句
- SqlCommandmycmd=newSqlCommand(cmd,myConn);
- mycmd.Connection.Open();//打开连接
- SqlDataReaderadr=null;//创建数据读取器
- try
- {
- adr=mycmd.ExecuteReader();
- while(adr.Read())
- {
- rec_count+=1;
- }
- myConn.Close();//关闭数据库连接
- mycmd.Connection.Open();//打开数据库连接
- try
- {
- adr=mycmd.ExecuteReader();
- f_TUSER=newUSEROP.TUSER[rec_count];
- while(adr.Read())
- {
- f_TUSER[CurRec].LoginName=adr["US_LOGINNAME"].ToString();
- f_TUSER[CurRec].LoginPass=adr["US_LOGINPASS"].ToString();
- f_TUSER[CurRec].TrueName=adr["US_TrueName"].ToString();
- f_TUSER[CurRec].EMail=adr["US_EMail"].ToString();
- f_TUSER[CurRec].Level=Int32.Parse(adr["US_Level"].ToString());
- CurRec+=1;
- }
- G_USERINFO=f_TUSER;
- myConn.Close();///关闭连接
- returntrue;
- }
- catch
- {
- myConn.Close();
- f_TUSER=newUSEROP.TUSER[1];
- f_TUSER[0].LoginName="";
- f_TUSER[0].LoginPass="";
- f_TUSER[0].TrueName="";
- f_TUSER[0].EMail="";
- f_TUSER[0].Level=0;
- G_USERINFO=f_TUSER;
- returnfalse;
- }
- }
- catch
- {
- myConn.Close();
- f_TUSER=newUSEROP.TUSER[1];
- f_TUSER[0].LoginName="";
- f_TUSER[0].LoginPass="";
- f_TUSER[0].TrueName="";
- f_TUSER[0].EMail="";
- f_TUSER[0].Level=0;
- G_USERINFO=f_TUSER;
- returnfalse;
- }
- /////////////////在WEBFORM中调用如下:
- privatevoidButton3_Click(objectsender,System.EventArgse)
- {
- KSBM.USEROP.TUSER[]f_TUSER;//=newKSBM.USEROP.TUSER();
- ///为什么不"new"一个结构数组呢?因为传进来的已是我们要的数据了,所以只要开辟一个存储空间就行了.
- KSBM.USEROPf_USOP=newKSBM.USEROP();
- boolret=f_USOP.GetUsers(outf_TUSER);///调用函数,取得结构数组及信息
- if(f_TUSER.Length!=0)//数据长度为0时,表明无返回数据.
- {
- for(intiloop=0;iloop<f_TUSER.Length;iloop++)///遍历数组并输出到客户端的浏览器
- {
- Response.Write(f_TUSER[iloop].LoginName);
- Response.Write(f_TUSER[iloop].LoginPass);
- Response.Write(f_TUSER[iloop].TrueName);
- Response.Write(f_TUSER[iloop].EMail);
- Response.Write(f_TUSER[iloop].Level);
- }
- }
以上介绍C#函数的参数返回结构数组
【编辑推荐】