使用c#中的out字符串从方法返回多个值

本文关键字:返回 方法 中的 out 字符串 使用 | 更新日期: 2023-09-27 18:27:12

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);
    }

使用c#中的out字符串从方法返回多个值

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

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)

您应该为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);

您必须删除字符串标记,因为您已经在(protected void SplitName(字符串名称,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);