返回多个值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});         
    }