嗨,我得到这个代码:不能隐式地将类型字符串转换为int。
CalculateSumOfList.ServiceReference1.Service1SoapClient client = new CalculateSumOfList.ServiceReference1.Service1SoapClient();
CalculateSumOfList.ServiceReference1.ArrayOfInt arrayOfInt = new CalculateSumOfList.ServiceReference1.ArrayOfInt();
arrayOfInt.AddRange(listInt);
int result = client.CalculateSum(arrayOfInt); //error here!
label1.Text = Convert.ToString(result);
我打电话的网络方法就在这里:
namespace CalculateWebServiceSum
{
/// <summary>
/// Summary description for Service1
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
// [System.Web.Script.Services.ScriptService]
public class Service1 : System.Web.Services.WebService
{
[WebMethod]
public string CalculateSum(List<int> listInt)
{
int[] sum = listInt.ToArray();
return sum.ToString();
}
}
}
答案 0 :(得分:5)
错误信息非常清楚。您的方法CalculateSum()
返回一个字符串。在发生错误的行上,您尝试使用字符串结果来设置int的值:
int result = client.CalculateSum(arrayOfInt);
^ type int ^ returns string
选项1
我建议您将CalculateSum()
更改为:
public int CalculateSum(List<int> listInt)
{
return listInt.Sum();
}
注意:我不确定您为什么要将List<int>
传递给要汇总的网络服务。如果您有List<int>
,只需致电List<int>.Sum()
,无需WS。
选项2
由于你在检索它之后在int上调用.ToString()
,为什么不把它作为字符串检索呢?
string result = client.CalculateSum(arrayOfInt);
public string CalculateSum(List<int> listInt)
{
return listInt.Sum().ToString();
}
答案 1 :(得分:2)
CalculateSum
返回一个字符串
public string CalculateSum(List<int> listInt)
并且您将它分配给整数变量。
int result = ...
我会更改CalculateSum
以返回整数。
答案 2 :(得分:2)
这里有很多问题。首先,您的CalculateSum
方法返回一个字符串,但您尝试将其存储到int。
int result = client.CalculateSum(arrayOfInt);
首先,您需要更改CalculateSum以返回int。此时您将看到CalculateSum返回..... System.Int32[]
。此外,intArray的基本ToString。所以你的逻辑也是有缺陷的。让我们解决这个问题。
public int CalculateSum(List<int> listInt)
{
int sum = listInt.Sum();
return sum.ToString();
}
然后你可能会发现你根本不需要这个方法,而且可以像这样做
int result = arrayOfInt.Sum();
答案 3 :(得分:1)
更改
int result = client.CalculateSum(arrayOfInt); //error here!
到
string result = client.CalculateSum(arrayOfInt); // no errors here!
但最好更改方法的签名以返回int,因为sum是一个数字。
[WebMethod]
public int CalculateSum(List<int> listInt)
{
return listInt.Sum();
}
答案 4 :(得分:0)
CalculateSum Web方法没有按照其名称建议 - 它不返回整数列表的总和,而是返回类型名称,即“System.Int32 []”。假设你真的想要整数的总和,并且你可以改变web方法,那么我建议如下:
[WebMethod]
public int CalculateSum(List<int> listInt)
{
return listInt.Sum();
}
您无需更改来电者。