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

函数|数组

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

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

实例:
  /// <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);
    }
   }
  }

时间: 2024-11-02 19:07:47

在C#中如何在函数参数中返回结构数组?的相关文章

C++函数参数中引用和指针有什么区别?

问题描述 C++函数参数中引用和指针有什么区别? C++函数参数中引用和指针有什么区别? 解决方案 ★ 相同点: 1. 都是地址的概念: 指针指向一块内存,它的内容是所指内存的地址: 引用是某块内存的别名. ★ 区别: 1. 指针是一个实体,而引用仅是个别名: 2. 引用使用时无需解引用(*),指针需要解引用: 3. 引用只能在定义时被初始化一次,之后不可变:指针可变: 引用"从一而终" ^_^ 4. 引用没有 const,指针有 const,const 的指针不可变: 5. 引用不能

多线程问题,中的sleep函数参数为0 的作用是什么 ?多线程问题,中的sleep函数

问题描述 多线程问题,中的sleep函数参数为0 的作用是什么 ?多线程问题,中的sleep函数 多线程问题,中的sleep函数参数为0 的作用是什么 ?多线程问题,中的sleep函数 解决方案 http://blog.csdn.net/lgstudyvc/article/details/9337063 解决方案二: 参数为零的调用的含义是当前线程自愿放弃CPU的竞争,便于操作系统进行新的CPU分配. 解决方案三: 参数为0表示主动调度一下,通常是一个线程需要等另外一个线程完成某个人物之后,自己

python-Python 函数参数中的lambda怎么解释?

问题描述 Python 函数参数中的lambda怎么解释? a = "aAsmr3idd4bgs7Dlsf9eAF" l = ([(x,a.count(x)) for x in set(a)]) l.sort(key = lambda k:k[1],reverse=True) 最后一条语句什么意思? 解决方案 Lambda相当于一个匿名函数,这里k是这个函数的参数,k[1]是函数体,按照这个数组的第一个元素排序. http://www.jb51.net/article/52730.ht

eclipse-eclise中如何有函数参数类型提示

问题描述 eclise中如何有函数参数类型提示 hi,麻烦问下像这面这种情况,我选定一个方法后无法得知里面参数类型,鼠标放上面也没什么提示,为什么有的人可以有呢,不知如何设置,求各位帮忙哈,谢谢了 解决方案 首先需要导入相应的jar包,并且add to build path,将鼠标指针放大方法上,才会出现参数类型提示. 如果 导入源码就会提示参数名, 如果导入docs,就会出现文档提示. 解决方案二: 要有相应的代码提示文档支持的

我的数据访问函数库的源代码(三)——返回结构数组

/* 2008 4 25 更新 */ 我的数据访问函数库的源码.整个类有1400行,原先就是分开来写的,现在更新后还是分开来发一下吧. 第三部分:返回结构数组,这个是专门针对网页来设计的.就是在网页上更方便的显示一组数据.     1//新增加的部分,返回结构数组用于绑定控件  2          3        函数实现 - - RunSqlStructBaseTitle#region 函数实现 - - RunSqlStructBaseTitle  4        /**//// <su

C#函数的参数中返回结构数组

函数|数组 实例:/// <summary>/// 用户信息结构/// </summary>public struct TUSER { public string LoginName; public string LoginPass; public string TrueName; public string EMail; public int Level;} /// <summary>/// 获得所有注册用户/// </summary>/// <pa

线程中的回调函数如何获得返回值,请高手开悟,在线等......

问题描述 普通回调方法:classA{classBxx=newclassB();stringss=k.ca(tm);stringtm(stringxm){returnxm+"一杯醉倒";}}classB{publicdelegatestringtc();publicstringca(tcmm){MessageBox.Show("到这里了!");returnmm("我");}}执行stringss=k.ca(tm);语句后,得到回调函数tm的返回值

MFC类库之CArray作为函数参数和返回值

一.获得返回值: 可以作为函数的一个参数 比如定义fun(CArray<int, int &> &array) 采用引用类型,就可以直接使用 二.作为函数参数: #include<Afxtempl.h> //定义函数. void ansnode(int num,CArray<double,double&> m_adX, CArray<double,double&> m_adY, CArray<double,double&

javascript让setInteval里的函数参数中的this指向特定的对象_javascript技巧

看到这个题,我蒙了,因为那时候我不清除这个问题,想了半天没想出来,后来到网上一查,在国外的某网站查到说setInterval和setTimeout之后的函数的作用域是全局的,也就是里面的this指向的是全局对象. 这个问题可麻烦了,我经常要在循环函数里用this来引用当前对象,也许你想到可以用闭包,不过实际情况并非如此简单,对象实例多了之后,闭包也乱套了. 我的愿望就是让循环函数里的this仍然指向当前上下文的对象,无需传参数,无需闭包(其实这也是闭包,只是形式上看着比较自然而已); 例如:(一