'无法转换为' void'对象'

时间:2016-10-03 23:08:57

标签: c# visual-studio variables parameters

使用输入和输出参数,我收到错误"参数2:无法转换为' void'反对"。不确定为什么要这样做或如何解决它。有谁知道解决方案?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ParameterPassing
{
    class Program
    {
        static void Main(string[] args)
        {
            int a = 5;
            int b, c;
            int[] list = new int[5];
            ParameterTest p = new ParameterTest(3);

            Console.WriteLine("Without method: {0}", a);

            Console.WriteLine("After the method: {0}", p.Value(a));

            Console.WriteLine("Using the Swap method: {0}", p.Swap(ref a));

            Console.WriteLine("Here is an array: {0}", p.OddEven(out b, out c));

        }
    }
}  

方法:

namespace ParameterPassing
{
    class ParameterTest
    {
        private int integer = 3;


        public ParameterTest(int myInt)
        {
            integer = myInt;
        }

        public int Value(int a)
        {
            a = 0;
            return a;
        }

        public int Swap(ref int b)
        {
            b = b * 4;
            return b;
        }

        public void OddEven(out int odd, out int even)
        {
            even = 0;
            odd = 0;
            int[] array = new int[5];
            Random generator = new Random(100);
            for (int i = 0; i < array.Length; i++)
            {
                array[i] = generator.Next(100);
            }

            foreach (int item in array)
            {
                if (item % 2 == 0)
                {
                    even = even++;
                }
                else
                {
                    odd = odd++;
                }

                Console.WriteLine(item);
            }

            Console.WriteLine("The number of odd numbers in the array is: {0}", odd);
            Console.WriteLine("The number of even numbers in the array is: {1}", even);
        }
    }
}

错误来自程序顶部的第四个Console.WriteLine行,特别是打算输出p.OddEven的部分。

2 个答案:

答案 0 :(得分:1)

OddEven的返回类型为void,因此未返回任何内容。

WriteLine期待某些东西作为第二个参数返回,就像在其他方法中一样 您需要在WriteLine之外调用该方法。

如果您要打印ab的值,则可以在调用{{1}后将ab传递到Console.WriteLine方法。

答案 1 :(得分:0)

OddEven类型为void,因此您无法在第4 Console.WriteLine页中使用它。更改类型并使OddEven返回某些内容或不尝试打印其结果。