【问题标题】:return multiple values from method using out string in c#在c#中使用out字符串从方法返回多个值
【发布时间】:2014-12-16 07:05:15
【问题描述】:

LoadEmployee 也是一种方法,我面临一个错误说:The out parameters 'Firstname' must be assigned to before control leaves the current method 还有其他方法可以在不使用out parameter 的情况下返回值

  protected void SplitName(string Name, out string FirstName, out string MiddleName)
    {

        char[] delimiterChars = { ',' };
        string[] name = acEmployee.Text.Split(delimiterChars);
        string Lastname = name[0];
        string middlename = name[1].Substring(Math.Max(0, name[1].Length - 1));
        string Firstname = name[1] = name[1].Remove(name[1].Length - 1);

    }


  private void LoadEmployee()

    {

        string name = acEmployee.Text;
        string firstname, middlename;
        SplitName(name,out firstname,out middlename);
    }

【问题讨论】:

  • 除此之外,你为什么要在最后一行给name[1] 赋值?这使得代码更难阅读,IMO。 (此外,我强烈建议您遵循 .NET 命名约定。)

标签: c# string methods parameters out


【解决方案1】:

您不能将它们作为局部变量,因为您需要为传入的参数赋值

protected void SplitName(string Name, out string FirstName, out string MiddleName)
{

    char[] delimiterChars = { ',' };
    string[] name = acEmployee.Text.Split(delimiterChars);
    string Lastname = name[0];
    Middlename = name[1].Substring(Math.Max(0, name[1].Length - 1));
    Firstname = name[1] = name[1].Remove(name[1].Length - 1);

}

你还可以做一个包含所有名称的对象

public class Name
{
    public string FirstName {get; set;}
    public string MiddleName {get; set;}
    public string LastName {get; set;}
}

然后你可以从你的方法中返回它

protected Name SplitName(string Name)

【讨论】:

    【解决方案2】:

    你应该给out参数赋值,所以替换下面的

      string middlename = name[1].Substring(Math.Max(0, name[1].Length - 1));
      string Firstname = name[1] = name[1].Remove(name[1].Length - 1);
    

      MiddleName= name[1].Substring(Math.Max(0, name[1].Length - 1));
      FirstName= name[1] = name[1].Remove(name[1].Length - 1);
    

    【讨论】:

      【解决方案3】:

      您必须删除字符串标签,因为您已经在 (protected void SplitName(string Name, out string FirstName, out string MiddleName)) 中声明了它们

      name = acEmployee.Text.Split(delimiterChars); Lastname = name[0]; middlename = name[1].Substring(Math.Max(0, name[1].Length - 1)); Firstname = name[1] = name[1].Remove(name[1].Length - 1);

      【讨论】:

        猜你喜欢
        • 2017-09-02
        • 2012-07-04
        • 2011-03-12
        • 1970-01-01
        • 2019-12-28
        • 1970-01-01
        • 2010-12-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多