C# 将数组从Web服务返回到客户端控制台
我试图使用我在c#中使用VisualStudio2010编写的Web服务返回Fibonacci数字序列数组。 这是我创建序列并将其存储在数组“Fibon”中以返回到客户端程序的函数C# 将数组从Web服务返回到客户端控制台,c#,arrays,web-services,C#,Arrays,Web Services,我试图使用我在c#中使用VisualStudio2010编写的Web服务返回Fibonacci数字序列数组。 这是我创建序列并将其存储在数组“Fibon”中以返回到客户端程序的函数 public class Service1 : System.Web.Services.WebService { [WebMethod] public long[] Fibonacci(int length) { long[] Fibon; Fibon =
public class Service1 : System.Web.Services.WebService
{
[WebMethod]
public long[] Fibonacci(int length)
{
long[] Fibon;
Fibon = new long [length];
Fibon[0] = 0;
Fibon[1] = 1;
for (int i = 2; i < length; i++)
{
Fibon[i] = Fibon[i - 2] + Fibon[i - 1];
}
return Fibon;
}
}`
公共类服务1:System.Web.Services.WebService
{
[网络方法]
公共长[]斐波那契(整数长度)
{
长纤维;
Fibon=新长[长度];
Fibon[0]=0;
Fibon[1]=1;
for(int i=2;i
调用该函数的客户端程序如下所示:
class Program
{
static void Main(string[] args)
{
Service1 webservice = new Service1();
Console.Out.Write("\nHow many number of the Fibonacci sequence do you want returned?\n");
int Number = Convert.ToInt32(Console.In.ReadLine());
long[] Sequence = new long[Number];
Sequence = webservice.Fibonacci(Number); // PROBLEM LINE ********
Console.Out.Write("\nThe Sequence is \n\n");
for (int i = 0; i <= Number; i++)
{
Console.WriteLine(Sequence[i]);
}
Console.Out.Write(", \n\nPress ENTER to return");
Console.ReadLine();
}
}
类程序
{
静态void Main(字符串[]参数)
{
Service1 webservice=newservice1();
Console.Out.Write(“\n要返回多少个斐波那契序列?\n”);
int Number=Convert.ToInt32(Console.In.ReadLine());
long[]序列=新的long[Number];
Sequence=webservice.Fibonacci(Number);//问题行********
Console.Out.Write(“\n序列为\n\n”);
for(int i=0;i在该行中不应该有错误,应该只在for循环中有问题:
class Program
{
static void Main(string[] args)
{
Service1 webservice = new Service1();
Console.Out.Write("\nHow many number of the Fibonacci sequence do you want returned?\n");
var Number = Convert.ToInt32(Console.In.ReadLine());
var Sequence = webservice.Fibonacci(Number);
Console.Out.Write("\nThe Sequence is \n\n");
for (int i = 0; i < Number; i++) // Fixed LINE ********
{
Console.WriteLine(Sequence[i]);
}
Console.Out.Write(", \n\nPress ENTER to return");
Console.ReadLine();
}
}
类程序
{
静态void Main(字符串[]参数)
{
Service1 webservice=newservice1();
Console.Out.Write(“\n要返回多少个斐波那契序列?\n”);
var Number=Convert.ToInt32(Console.In.ReadLine());
var序列=webservice.Fibonacci(数字);
Console.Out.Write(“\n序列为\n\n”);
对于(int i=0;i
我遵照你的建议,Peyman,解决方案成功了。我还不得不更改代码中的行
int Number = Convert.ToInt32(Console.In.ReadLine());
long[] Sequence = new long[Number];
Sequence = webservice.Fibonacci(Number);
从代码中选择建议的行
var Number = Convert.ToInt32(Console.In.ReadLine());
var Sequence = webservice.Fibonacci(Number);
代码现在运行并根据需要返回序列。非常感谢!!!您真的确定您的控制台应用程序调用了Service1.Fibonacci()
方法,如您的代码示例所示?您的控制台应用程序是否指向正确的服务?如果您说是,您是否已通过调试证明了这一点?尽管循环是错误的,并且存在其他奇怪的编码元素,但错误“无法隐式地将类型“int”转换为“long[]”您的解决方案未解决此问题。它解决了索引超出范围的异常。是的,我知道这一点,但正如我所说的,这一行没有错。我必须更改索引问题和代码中的其他几行,如下面的答案所示。谢谢你们的建议。