返回多个值C#
我已经写了一个单独的类,拥有我的网站的权限。我每节课都给这个班打电话。我无法从权限类中恢复值。我将在下面向您展示我所拥有的: 权限类返回多个值C#,c#,class,return,C#,Class,Return,我已经写了一个单独的类,拥有我的网站的权限。我每节课都给这个班打电话。我无法从权限类中恢复值。我将在下面向您展示我所拥有的: 权限类 public class Permissions { public static string selectedNumber = ""; public static string selectedName= ""; public static string selectedLocation= ""; public Info
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
将如下所示:
public void SetInfo(string SeelctedUserValue,
out string number, out string name, out string location)
{
//assign values to number,name and location
}
若要返回同一对象的多个实例,方法应返回
IEnumerable
(即列表
或数组
)元组
Tuple
:
public元组SetInfo(字符串SeelctedUserValue)
{
//查询数据库
返回新元组(
新信息{number=“number”,name=“name”,location=“location},
新信息{number=“number”,name=“name”,location=“location},
新信息{number=“number”,name=“name”,location=“location});
}
您没有保存要返回的对象var info=permission.SetInfo(selectedUserValue)
之后,您可以使用info
variableRight,我明白了…但是我将如何返回3个对象?在列表中?您应该使用块在中打开sql连接,使其始终处于关闭状态。如果要返回多个info
对象,则返回集合(列表/数组等)如果这些对象中的每一个都有不同的含义,那么考虑创建具有三个属性的类,即“代码”>“信息< /代码>,并用适当的名称返回,这样我们就可以得到正确的信息:得到一些信息的函数实际上被称为<代码> SETIVION<代码>?更容易…有几种方法可以做你想做的事情。你必须决定哪种方法最适合你的情况和环境。我有我的初始方法和参数。我会决定什么对我最好。非常感谢
public void SetInfo(string SeelctedUserValue,
out string number, out string name, out string location)
{
//assign values to number,name and location
}
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});
}