C# 从类的属性返回2个值
可能重复:C# 从类的属性返回2个值,c#,C#,可能重复: 假设我们有一个属性,它获取的值类似于10-1685,我想在类中添加另一个属性,该属性将这两个值作为单独的值返回。我如何实现这一点 public string UserName { get; set; } public string UserNameSeparated { get { Username.Split('-'); } set { ...What do do
假设我们有一个属性,它获取的值类似于
10-1685
,我想在类中添加另一个属性,该属性将这两个值作为单独的值返回。我如何实现这一点
public string UserName { get; set; }
public string UserNameSeparated
{
get { Username.Split('-');
}
set
{
...What do do here??
}
}
将属性的返回类型更改为字符串数组:
public string UserName { get; set; }
public string[] UserNameSeparated
{
get { Username.Split('-'); }
set
{
UserName = String.Join("-", value);
}
}
用法:
foo.UserName = "10-1685";
string[] names = foo.UserNameSeparated;
// names[0] = "10";
// names[1] = "1685";
foo.UserNameSeparated = new string[] { "15", "42" };
// foo.UserName = "15-42"
但是考虑到名称的两个部分都有属性。您将能够随时计算全名,并且您将处理命名良好的属性,而不是元组或数组索引(支持地狱):
只需比较(您可以提供更多描述性名称,更好地描述您的数据): 与:将属性的返回类型更改为字符串数组:
public string UserName { get; set; }
public string[] UserNameSeparated
{
get { Username.Split('-'); }
set
{
UserName = String.Join("-", value);
}
}
用法:
foo.UserName = "10-1685";
string[] names = foo.UserNameSeparated;
// names[0] = "10";
// names[1] = "1685";
foo.UserNameSeparated = new string[] { "15", "42" };
// foo.UserName = "15-42"
但是考虑到名称的两个部分都有属性。您将能够随时计算全名,并且您将处理命名良好的属性,而不是元组或数组索引(支持地狱):
只需比较(您可以提供更多描述性名称,更好地描述您的数据): 与: 可以使用元组 前面已经回答了这个问题:您可以使用元组在此之前,问题已经得到了回答:在Jamie引用的帖子上,有一篇文章引用了一篇文章,这篇文章的基础是: 那里的“流行”答案是使用一个图普。然而,您应该注意到Bill K、Fred Larson和Jonathan Leffler的答案,他们都指出实现这一点的更好方法是使用类或结构
另外,请看一下Microsoft如何在.net framework中构造自己的代码。我从未见过他们使用touple作为任何东西的返回值。我认为这本身就是一个很好的迹象,表明哪种做法更好。在Jamie提到的文章中,有一篇文章提到了一篇文章,这篇文章的基础是: 那里的“流行”答案是使用一个图普。然而,您应该注意到Bill K、Fred Larson和Jonathan Leffler的答案,他们都指出实现这一点的更好方法是使用类或结构
另外,请看一下Microsoft如何在.net framework中构造自己的代码。我从未见过他们使用touple作为任何东西的返回值。我认为这本身就是一个很好的迹象,说明哪种做法更好。为什么不创建一个带有两个属性的类或结构来表示您的数据?因为我从数据库获取数据,值存储为X-Y,我必须将它们分配给类。为什么不创建一个带有两个属性的类或结构来表示您的数据数据?因为我从数据库中获取数据,值存储为X-Y,我必须将它们分配给类。我觉得我缺少一些明显的东西,但是。。。你为什么要这样做,而不是仅仅创建一个有两个属性的类或结构?@BrandonMoore同意。我的代码中从未使用过元组。非常非描述性的数据类型。创建具有两个属性的类大约需要10秒。是的,具有两个属性的类是另一个可行的解决方案,如上面的链接所示。我觉得我在这里遗漏了一些明显的东西,但是。。。你为什么要这样做,而不是仅仅创建一个有两个属性的类或结构?@BrandonMoore同意。我的代码中从未使用过元组。非常非描述性的数据类型。创建具有两个属性的类大约需要10秒钟。是的,具有两个属性的类是另一个可行的解决方案,如上面的链接所示。
foo.UserNameSeparated.Item1
foo.UserNameSeparated.Item2