返回多个值C#

时间:2015-10-19 23:54:08

标签: c# class return

我写了一个单独的类来保存我的网站的权限。我在每个班级打电话给这个班级。我无法从我的权限类中恢复值。我会告诉你我下面的内容:

权限类

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()

的3个返回值进行调用的类中设置文本框

目前我无法获得任何回报....我知道我做错了什么,显然。那么有人可以就如何实现这一点给我一些建议吗?

1 个答案:

答案 0 :(得分:2)

除了我遇到的一些风格之外,你的代码看起来应该可以工作(只要你的数据库中有数据)。要从方法返回多个值,请创建一个新对象(即number),用于定义要返回的内容。

所以,你应该能够写出类似的内容:

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

要返回同一对象的多个实例,请返回

方法
  1. public void SetInfo(string SeelctedUserValue, out string number, out string name, out string location) { //assign values to number,name and location } (即IEnumerableList),
  2. a Array
  3. 一个容器对象。
  4. 例如,如果您知道要返回三个,那么您可能希望让方法返回Tuple<>

    Tuple<Info,Info,Info>