【问题标题】:C# beginner- Question regarding returning of Array valuesC#初学者-关于返回数组值的问题
【发布时间】:2020-10-24 10:33:12
【问题描述】:
internal double[] fillingArray()
{
    a = 1.5;
    b = .5;
    
    for (i = 0; i<10; i++)
    {
        c = a * b;
        a = a + 1;
        b = b + 1;
        arrayInt[i] = c;  
    }
    
    return arrayInt;
}

我想调用一个方法fillingArray() 来存储数组变量并通过displayAll() 主方法显示这些变量。 返回 arrayInt 时,控制台显示 system.Double 但不显示数组内的值。

【问题讨论】:

  • 能分享一下控制台显示的代码吗?
  • 返回arrayInt 似乎没有任何意义(它也没有充满整数!)因为eit 是在类级别明确声明的。也许你也应该把它传递给这个方法
  • 如下Caius所说,writeLine方法转换并显示为字符串。但是,这里这是一个数组,它返回数组的类型。因此,我会在另一种方法中循环 writeLine,以获取来自fillingArray 的每次返回。
  • 由于 cmets 长度的限制,我会破坏代码并粘贴
  • class accessMethods { static void Main(String[] args) { //从methodsRevision中访问方法 class Console.WriteLine("\nInternalchargingArray Method's value in accessMethods class: {0}", mr.fillingArray ()); Console.WriteLine("\n访问方法类中受保护的 intToStringConversion 方法的值:{0}", mr.intToStringConversionIpsMethod()); Console.WriteLine("\n无法访问私有、私有受保护和受保护的方法"); //END } } }

标签: c# arrays .net methods console-application


【解决方案1】:

您需要像填充函数一样解析每个值:

static void Test()
{
  Display(CreateFilledArray());
}

static internal void Display(double[] array)
{
  foreach ( var value in array )
    Console.WriteLine(value);
}

static internal double[] CreateFilledArray()
{
  var result = new double[10];
  double a = 1.5;
  double b = .5;
  for ( int index = 0; index < 10; index++ )
  {
    result[index] = a * b;
    a = a + 1;
    b = b + 1;
  }
  return result;
}

输出

0,75
3,75
8,75
15,75
24,75
35,75
48,75
63,75
80,75
99,75

【讨论】:

    【解决方案2】:

    我感觉你在做这样的事情:

    Console.WriteLine(arrayInt);
    

    并期望它显示数组中所有数字的表示。 C# 不这样做;它只会打印出数组的类型,即System.Double[]

    这里实际发生的是,WriteLine 只能编写“看起来合理的东西”,如果它是它可以专门处理的东西。 WriteLine 可以处理很多不同的事情:

    Console.WriteLine(1); //handles numbers
    Console.WriteLine('1'); //handles characters
    Console.WriteLine("1"); //handles strings
    

    WriteLine 无法处理数组;它们被传递给处理对象的 WriteLine 版本,而 那个 版本的 WriteLine 所做的唯一事情就是在传入的对象上调用 ToString(),然后打印 ToString 返回的字符串结果.当我们在数组上调用 ToString 时,它只返回数组的类型,而不是数组中的值

    这就是您在控制台中看到“System.Double[]”的原因

    您必须循环遍历数组,将值一一打印出来(您还可以使用其他技巧,但它们比您目前所知道的更高级的 c#,如果这是一个学术任务)

    我知道你知道如何循环,所以我将把它的实现留给你

    【讨论】:

    • 谢谢,这是有道理的。我假设当我调用一个方法时,调用方法也会沿着被调用方法迭代。
    【解决方案3】:

    我将方法修改为字符串并返回一个字符串值连接数组的值——这有效

    internal string fillingArray()
            {
                a = 1.5;
                b = .5;
                for (i = 0; i<10; i++)
                {
                    c = a * b;
                    a = a + 1;
                    b = b + 1;
                    arrayInt[i] = c;
                    //astr array string
                    astr = astr + arrayInt[i].ToString() + " ";
                }
                return astr;
    

    【讨论】:

      猜你喜欢
      • 2020-05-18
      • 2011-01-12
      • 2018-01-08
      • 2020-05-10
      • 1970-01-01
      • 1970-01-01
      • 2020-05-13
      • 2011-05-09
      • 1970-01-01
      相关资源
      最近更新 更多