0

可能重复:
如何从 C# 中的函数返回多个值?

想象一下,我们有一个属性,它得到一个值10-1685,我想在一个类中添加另一个属性,将这两个值作为单独的值返回。我怎样才能实现呢?

    public string UserName { get; set; }



    public string UserNameSeparated
    {
        get { Username.Split('-');
        }
        set
        {
            ...What do do here??
        }
    }
4

3 回答 3

3

将属性的返回类型更改为字符串数组:

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 FirstName { get; set; }
public string LastName { get; set; }

public string UserName
{
    get { return String.Format("{0}-{1}", FirstName, LastName); }
    set 
    {
        // check if value format valid
        var names = value.Split('-');
        FirstName = names[0];
        LastName = names[1];
    }
}

只需比较(您可以提供更具描述性的名称,更好地描述您的数据):

foo.FirstName
foo.LastName

和:

foo.UserNameSeparated.Item1
foo.UserNameSeparated.Item2 
于 2012-12-27T10:04:06.203 回答
3

您可以使用元组。

这个问题之前已经回答过:如何从 C# 中的函数返回多个值?

于 2012-12-27T10:04:12.487 回答
0

在 Jamie 引用的帖子中,有一个帖子的引用是基于:Returning multiple values from a C++ function

那里的“流行”答案是使用touple。但是,您应该注意 Bill K、Fred Larson 和 Jonathan Leffler 的回答,它们都指出了实现这一点的更好方法是使用类或结构。

还可以查看 Microsoft 如何在 .net 框架中构建自己的代码。我从未见过他们使用 touple 作为任何东西的返回值。我认为这本身就是一个很好的迹象,说明哪种做法更好。

于 2012-12-27T10:40:54.330 回答