使用输入和输出参数,我收到错误"参数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
的部分。
答案 0 :(得分:1)
OddEven
的返回类型为void
,因此未返回任何内容。
WriteLine
期待某些东西作为第二个参数返回,就像在其他方法中一样
您需要在WriteLine
之外调用该方法。
如果您要打印a
和b
的值,则可以在调用{{1}后将a
和b
传递到Console.WriteLine
方法。
答案 1 :(得分:0)
OddEven
类型为void
,因此您无法在第4 Console.WriteLine
页中使用它。更改类型并使OddEven
返回某些内容或不尝试打印其结果。