C# 在两个int之间添加连字符或下划线
我正试图从数据库中获取一些Id。如果我得到一个值,它将按预期工作,但是我希望我的方法返回多个值。比如说 如果,C# 在两个int之间添加连字符或下划线,c#,C#,我正试图从数据库中获取一些Id。如果我得到一个值,它将按预期工作,但是我希望我的方法返回多个值。比如说 如果,Id1=1和Id2=2我想将其显示为1-2或1\u 2。我似乎不知道如何将连字符-或下划线-放在两个int之间。我的代码在下面 public int GetId() { using (SqlConnection connection = new SqlConnection(ConnectionString)) { string userName = Ht
Id1=1和Id2=2
我想将其显示为1-2
或1\u 2
。我似乎不知道如何将连字符-
或下划线-
放在两个int
之间。我的代码在下面
public int GetId()
{
using (SqlConnection connection = new SqlConnection(ConnectionString))
{
string userName = HttpContext.Current.User.Identity.Name;
UserInfo info = new UserInfo();
using (SqlCommand cmd = new SqlCommand("SELECT FirstId, SecondId FROM MyTable WHERE UserName=@userName"))
{
cmd.Parameters.AddWithValue("UserName", userName);
cmd.Connection = connection;
connection.Open();
using (SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
info.FirstId = reader.GetInt32(0);
info.SecondId = reader.GetInt32(1);
}
}
}
return info.FirstId + "_" + info.SecondId;
}
}
我的
UserInfo
类具有基本的Get和Set
属性。我今天只遇到了Tuple
。我尝试使用元组
,但得到的值显示为(1,2)
。使用元组
时,我当然可以添加下划线\uu
或连字符-
,但问题是我无法去掉括号()
和分隔值的逗号,
。谁能给我指一下正确的方向吗。提前感谢您的帮助和支持。该方法声明返回一个int
:
public int GetId()
但是尝试返回一个字符串
:
return info.FirstId + "_" + info.SecondId;
连字符或下划线表示它不再是数字数据类型,现在只是字符串。因此,您必须将其作为字符串返回:
public string GetId()
{
// etc.
return string.Format("{0}_{1}", info.FirstId, info.SecondId);
}
如果您希望数据仍然以某种方式结构化,那么正如您所建议的那样,Tuple
将起到以下作用:
public Tuple<int, int> GetId()
{
// etc.
return new Tuple<int, int>(info.FirstId, info.SecondId);
}
这也意味着您将使用非常不直观的名称,如Item1
和Item2
。如果您想要更合适的名称,可以引入自定义对象:
public class IDs
{
public int FirstId { get; set; }
public int SecondId { get; set; }
}
然后返回一个实例。这种方法还有一些额外的优点:
- 您可以将
和FirstId
重命名为更有意义的名称SecondId
- 您可以通过使setter
并添加接受值的构造函数来使对象不可变private
- 您可以重写
,为其提供带有下划线的默认.ToString()
字符串表示形式
public class IDs
{
public int FirstId { get; private set; }
public int SecondId { get; private set; }
private IDs() { }
public IDs(int firstId, int secondId)
{
FirstId = firstId;
SecondId = secondId;
}
public override string ToString()
{
return string.Format("{0}_{1}", FirstId, SecondId);
}
}
然后返回该实例:
public IDs GetId()
{
// etc.
return new IDs(info.FirstId, info.SecondId);
}
消费代码可以按原样显示,因为它的字符串表示形式是内部定义的:
var id = GetId();
Console.Write(id);
整数不能有下划线。如果要返回2个值,为什么不直接返回已填充的
UserInfo
实例呢?如果希望将其作为字符串,则方法的返回类型不应是int。如果方法返回int和int
,但如果将其与“u”或“-”连用,则有一个字符串。此外,为什么不返回一个列表
或一个数组,或者只返回UserInfo呢?您可以创建自己的类似于Tuple的类,并重写它的ToString方法。如果您解释了为什么要这样做,会更容易帮助您。有两个ID并尝试将它们连字符似乎比较奇怪。非常感谢您提供的详细答案。
var id = GetId();
Console.Write(id);