在C#中如何在函数参数中返回结构数组?

原创 2001年11月16日 17:09:00

 

头晕脑涨地研究了一天,就为了实现在函数的参数中返回结构数组。

现供大家分享,节省学习时间。

实例:
  /// <summary>
  /// 用户信息结构
  /// </summary>
  public struct TUSER
  {
   public string LoginName;
   public string LoginPass;
   public string TrueName;
   public string EMail;
   public int Level;
  }

  /// <summary>
  /// 获得所有注册用户
  /// </summary>
  /// <param name="USERINFO">返回用户信息结构</param>
  public bool GetUsers(out TUSER[] G_USERINFO)
   {
   USEROP.TUSER[] f_TUSER;
   int CurRec = 0;  //初始化记录计数器
   int rec_count =0; //计算总记录数
   SqlConnection myConn = new SqlConnection(connectionString);
   string cmd="select * from " +m_Table;  //SQL查询语句
   SqlCommand mycmd=new SqlCommand(cmd,myConn);
   mycmd.Connection.Open(); //打开连接
   SqlDataReader adr = null; //创建数据读取器
   try
   {
    adr = mycmd.ExecuteReader();
    while(adr.Read ())
    {
     rec_count += 1;
    }
    myConn.Close();  //关闭数据库连接
    mycmd.Connection.Open (); //打开数据库连接
    try
    {
     adr = mycmd.ExecuteReader ();
     f_TUSER = new USEROP.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 (); ///关闭连接
     return true;
    }
    catch
    {
     myConn.Close();
     f_TUSER = new USEROP.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;
     return false;
    }
   }
   catch
   {
    myConn.Close ();
    f_TUSER = new USEROP.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;
    return false;
   }

///////////////// 在WEB FORM中调用如下:
  private void Button3_Click(object sender, System.EventArgs e)
  {
   KSBM.USEROP.TUSER[] f_TUSER; // = new KSBM.USEROP.TUSER(); ///为什么不"new" 一个结构数组呢?因为传进来的已是我们要的数据了,所以只要开辟一个存储空间就行了.
   KSBM.USEROP f_USOP = new KSBM.USEROP();
   bool ret=f_USOP.GetUsers (out f_TUSER); ///调用函数,取得结构数组及信息
   if(f_TUSER.Length !=0) //数据长度为0时,表明无返回数据.
   {
    for(int iloop=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);
    }
   }
  }

子函数返回数组(指针和结构体)

有些时候需要子函数将一个数组返回出来,通常是两种方法,一种是靠指针,另一种是结构体。 一、先来看依靠指针怎么做 例程1: 1 #include "stdio.h" 2 3 char *...
  • u011426247
  • u011426247
  • 2016年08月08日 21:46
  • 1140

C#结构体中数组的分配

 http://blog.163.com/adslxk@126/blog/static/10061067120098445849265/ 在写C#TCP通信程序时,发送数据时,只能发送byte...
  • liuxf196921
  • liuxf196921
  • 2014年03月19日 20:54
  • 825

基于gsoap开发WebService服务返回结构体数组

基于gsoap开发WebService服务返回结构体数组 gsoap搭建和快速WebService示例编写,前面文章已经介绍过,此文直接讲关键点。 (1)返回的目标结构,开头以ns...
  • liang12360640
  • liang12360640
  • 2015年09月16日 17:33
  • 2402

C#调用C++生成的dll,参数有结构体数组

废话少说,只上程序。 C++生成dll程序: /* 实现功能:将一个图片中,所在行的像素值,按照一定的间隔(列数),将对应点的像素值提取出来。 */ #include "opencv2/highgu...
  • peng825223208
  • peng825223208
  • 2014年12月15日 20:10
  • 1156

把字符串分成字符串数组-用结构体返回数组

目的: 把一个带逗号的字符串比如“”aa,bbb,cc,dd“”分成四个小的字符串,利用结构体返回一个数组 #include #include using namespace std...
  • weixin_36748426
  • weixin_36748426
  • 2016年11月19日 09:54
  • 156

C#--如何在一个函数中返回两个值(包含数组的参数)

/*烟台大学计算机学院学生 *All right reserved. *文件名称:C#--如何在一个函数中返回两个值(包含数组的参数) *作者:杨飞 *完成日期:2014...
  • u012370105
  • u012370105
  • 2014年09月23日 11:06
  • 2641

Jni返回结构体数组

Jni返回结构体数组 1.   jclass和jobject的问题 第一次使用JNI,实例引用(jobject)和类引用(jclass)让人觉得很困惑。 实例引用与一个数组和java.lang....
  • zzzzzqf
  • zzzzzqf
  • 2014年06月27日 19:40
  • 1217

C#调用C++方法,C#使用c++方法返回类或结构体

http://www.cnblogs.com/yukaizhao/archive/2011/04/27/csharp_call_cpp_class_struct.html C#调用C++方法...
  • cocoasprite
  • cocoasprite
  • 2015年08月22日 00:08
  • 787

C#学习之byte数组与结构体之间的转换

原文: http://www.cnblogs.com/sunrack/articles/1244043.html //**注意在我的实际项目中直接调用字节转换,并没有定义结构体 在写C#T...
  • ycigwy
  • ycigwy
  • 2017年04月21日 09:59
  • 464

JNI返回自定义结构体数组到Java

网上关于jni返回自定义结构体数组的文章大部分参差不齐,有的这样写有的那样写,多多少少有 bug,然后就自己探索了一下,基本下面这种写法应该算比较标准的,有任何问题可以评论交流下。...
  • qq_30135181
  • qq_30135181
  • 2017年11月01日 20:42
  • 212
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在C#中如何在函数参数中返回结构数组?
举报原因:
原因补充:

(最多只允许输入30个字)