【问题标题】:returning array of characters from function从函数返回字符数组
【发布时间】:2014-02-06 22:39:45
【问题描述】:

如何从函数返回一个字符数组?我目前正在使用 c#。我有这个功能:

public char bsortfunction(char[] letters)
{
  char temp;
  for (int i = 0; i < letters.Length; i++)
  {
   for (int x = 0; x < i; x++)
   {
    if (letters[i] < letters[x])
    {
      temp = letters[i];
      letters[i] = letters[x];
      letters[x] = temp;
     }

   }

  }
   return (cant seem to figure out how to return the letters[])

}

private void btnsort_Click(object sender, EventArgs e)
{
   char[] characters = txtstring.Text.ToCharArray();       
   lblresult.Text = bsortfunction(characters);

}

【问题讨论】:

  • 所以它应该是一个公共字符。好的,先生,我试试,谢谢
  • 请澄清您的问题。您要返回字符串还是字符数组?
  • 我想返回一个字符数组
  • 去做吧! char-array 在 char:char[] 之后用 [] 表示

标签: c# arrays


【解决方案1】:

如果你想返回字符串试试:

 return new String(letters);

如果要返回 char 数组,请将方法的返回类型更改为 char 数组:

public char[] lettersbsortfunction(char[] letters)

还有:

return letters;

在这种情况下你也可以使用ref关键字。如果你只想操作字母数组,你不需要返回任何东西:

 public void bsortfunction(ref char[] letters)
 {
    char temp;
    for (int i = 0; i < letters.Length; i++)
    {
      for (int x = 0; x < i; x++)
      {
        if (letters[i] < letters[x])
        {
           temp = letters[i];
          letters[i] = letters[x];
          letters[x] = temp;
       }

   }

 }

【讨论】:

    【解决方案2】:

    使用:

      public char[] bsortfunction(char[] letters)
        {
            char temp;
            for (int i = 0; i < letters.Length; i++)
            {
                for (int x = 0; x < i; x++)
                {
                    if (letters[i] < letters[x])
                    {
                        temp = letters[i];
                        letters[i] = letters[x];
                        letters[x] = temp;
                    }
    
                }
    
            }
            return (letters);
        }
    

    或者你可以使用:

    return new string(letters);
    

    sample:

    char[] chars = {'a', ' ', 's', 't', 'r', 'i', 'n', 'g'};
    string s = new string(chars);
    

    【讨论】:

    • 我遇到了一个错误。无法将类型“char[]”隐式转换为“char”
    • 无法将类型 'char[]' 隐式转换为 'string'。它现在引用此代码: lblresult.Text = bsortfuncion(characters);
    • 使用:返回新字符串(字母);
    • 方法中没有错误了。现在的错误是当我调用函数时:lblresult.text = bsortfunction(characters);。它说它不能将 char[] 转换为字符串
    【解决方案3】:

    您正试图返回一个字符串。试试这个:

    public char[] lettersbsortfunction(char[] letters)
    {
      char temp;
      for (int i = 0; i < letters.Length; i++)
      {
       for (int x = 0; x < i; x++)
       {
        if (letters[i] < letters[x])
        {
          temp = letters[i];
          letters[i] = letters[x];
          letters[x] = temp;
         }
    
       }
    
      }
       return letters;
    
    }
    

    【讨论】:

    • 谢谢先生。现在的问题是当我调用该函数时。它说它不能将 char[] 转换为字符串
    • 所以返回一个字符串 =) 看看 dvnrrs 答案
    【解决方案4】:

    只返回一个新字符串:

    return new string(letters);
    

    【讨论】:

      【解决方案5】:

      如果你只是想将你的字符数组转换成字符串,你可以这样写:

      return new string(letters);
      

      如果需要返回一个实际的字符数组,则需要将函数的返回类型改为char[],而不是string。

      【讨论】:

        【解决方案6】:

        你可以这样做:

        return new string(letters);
        

        【讨论】:

          猜你喜欢
          • 2014-04-11
          • 2013-03-25
          • 2011-09-04
          • 1970-01-01
          • 1970-01-01
          • 2013-11-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多