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