c#返回多个值
本文关键字:返回 | 更新日期: 2023-09-27 18:18:29
我已经写了一个单独的类,持有我的网站的权限。我每节课都给这个班打电话。我有麻烦从我的权限类带回值。我将在下面展示我的代码:
Permissions类
public class Permissions
{
public static string selectedNumber = "";
public static string selectedName= "";
public static string selectedLocation= "";
public Info SetInfo(string selectedValue)
{
string selectInfo = "SELECT [Num] AS 'Number', [Name] AS 'Name', CONVERT(nvarchar(50),RTRIM(b.Num])) + ' - ' + CONVERT(nvarchar(50),b.Name) AS 'Location' "
+ "FROM [TBL_Info] a "
+ "left join [TBL_Where] b on (a.[ID] = b.[ID]) "
+ "WHERE a.ID = @ID";
sqlCmd = new SqlCommand(selectInfo, sqlConn);
sqlConn.Open();
sqlCmd.Parameters.AddWithValue("@ID", selectedValue);
SqlDataReader rdrInfo = sqlCmd.ExecuteReader();
if (rdrInfo.HasRows)
{
rdrInfo.Read();
selectedNumber = rdrInfo .GetSqlString(rdrInfo .GetOrdinal("Number")).ToString();
selectedName= rdrInfo .GetSqlString(rdrInfo .GetOrdinal("Name")).ToString();
selectedLocation = rdrInfo .GetSqlString(rdrInfo .GetOrdinal("Location")).ToString();
}
sqlCmd.Connection.Close();
return new Info()
{
number= selectedNumber,
name= selectedName,
location= selectedLocation
};
}
public class Info
{
public String number{ get; set; }
public String name{ get; set; }
public String location{ get; set; }
}
}
我正在尝试在另一个类中调用它,像这样:
Classes.Permissions permission = new Classes.Permissions();
permission.SetInfo(selectedUserValue);
最终产品是我在类中设置文本框,我试图从permission.SetInfo()
目前我不能得到任何返回....我清楚地知道我做错了什么。所以有人能给我一些关于如何实现这一点的建议吗?
除了一些风格的东西我有问题,你的代码看起来应该工作(只要你有数据在你的数据库)。要从一个方法中返回多个值,创建一个新对象(如Info
)来定义要返回的东西。
所以,你应该可以这样写:
Textbox txtBox;
var info = new Classes.Permissions().SetInfo(SelectedUserValue);
txtBox.Text =
info.number ?? "<null>" + " " +
info.name ?? "<null> + " " +
info.location ?? "<null>'
请注意,我使用了空合并操作符(??
),因为SetInfo
可以返回Info
的实例,如果没有从数据库查询返回行,则所有成员都是null
。
out
参数:
Textbox txtBox;
string number;
string name;
string location;
new Classes.Permissions().SetInfo(SelectedUserValue, out number, out name, out location);
然后你的SetInfo
看起来像:
public void SetInfo(string SeelctedUserValue,
out string number, out string name, out string location)
{
//assign values to number,name and location
}
要返回多个相同对象的实例,那么你的方法应该返回
- 和
IEnumerable
(即List
或Array
), - a
Tuple<>
,
例如,如果你知道你要返回恰好是3,你可能想让你的方法返回Tuple<Info,Info,Info>
:
public Tuple<Info, Info, Info> SetInfo(string SeelctedUserValue)
{
//query db
return new Tuple<Info, Info, Info>(
new Info{ number = "number", name = "name", location="location},
new Info{ number = "number", name = "name", location="location},
new Info{ number = "number", name = "name", location="location});
}