C#函數(shù)的參數(shù)中返回結(jié)構(gòu)數(shù)組
2024-07-21 02:19:21
供稿:網(wǎng)友
實(shí)例:
/// <summary>
/// 用戶信息結(jié)構(gòu)
/// </summary>
public struct tuser
{
public string loginname;
public string loginpass;
public string truename;
public string email;
public int level;
}
/// <summary>
/// 獲得所有注冊(cè)用戶
/// </summary>
/// <param name="userinfo">返回用戶信息結(jié)構(gòu)</param>
public bool getusers(out tuser[] g_userinfo)
{
userop.tuser[] f_tuser;
int currec = 0; //初始化記錄計(jì)數(shù)器
int rec_count =0; //計(jì)算總記錄數(shù)
sqlconnection myconn = new sqlconnection(connectionstring);
string cmd="select * from " +m_table; //sql查詢語(yǔ)句
sqlcommand mycmd=new sqlcommand(cmd,myconn);
mycmd.connection.open(); //打開(kāi)連接
sqldatareader adr = null; //創(chuàng)建數(shù)據(jù)讀取器
try
{
adr = mycmd.executereader();
while(adr.read ())
{
rec_count += 1;
}
myconn.close(); //關(guān)閉數(shù)據(jù)庫(kù)連接
mycmd.connection.open (); //打開(kāi)數(shù)據(jù)庫(kù)連接
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 (); ///關(guān)閉連接
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中調(diào)用如下:
private void button3_click(object sender, system.eventargs e)
{
ksbm.userop.tuser[] f_tuser; // = new ksbm.userop.tuser(); ///為什么不"new" 一個(gè)結(jié)構(gòu)數(shù)組呢?因?yàn)閭鬟M(jìn)來(lái)的已是我們要的數(shù)據(jù)了,所以只要開(kāi)辟一個(gè)存儲(chǔ)空間就行了.
ksbm.userop f_usop = new ksbm.userop();
bool ret=f_usop.getusers (out f_tuser); ///調(diào)用函數(shù),取得結(jié)構(gòu)數(shù)組及信息
if(f_tuser.length !=0) //數(shù)據(jù)長(zhǎng)度為0時(shí),表明無(wú)返回?cái)?shù)據(jù).
{
for(int iloop=0;iloop<f_tuser.length;iloop++) ///遍歷數(shù)組并輸出到客戶端的瀏覽器
{
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);
}
}
}