我有以下网络服务功能 -
[ServiceContract]
public interface ITest
{
[OperationContract]
double Sum(double a, double b);
}
public class Test : ITest
{
public double Sum(double a, double b)
{
double answer = a + b;
return answer;
}
我正在使用它实现它 -
double a = double.Parse(textBox1.Text);
double b = double.Parse(textBox2.Text);
double sum = sc.Sum(a, b);
我的问题是这只能处理两个双打,我怎么能从一个文本框中处理几个,即1,2,3,4
,响应为10
?
答案 0 :(得分:0)
您可以将签名更改为字符串而不是两个双打。
如果你在客户端解析双打的另一个选择是更改方法以接受params数组的双精度。
[OperationContract]
double Sum(params double[] myParams);
答案 1 :(得分:0)
如果您希望以您解释的方式处理它,那么您可以先.Split()
文本框文本
string[] numbers = textBox1.Text.Split(',');
现在您将它们分开将它们转换为双打
double[] doubleNumbers = new double[numbers.Count];
int counter = 0;
foreach(string s in numbers)
{
doubleNumbers[counter++] = Double.Parse(s);
}
然后将其发送到您的总和函数
Sum(doubleNumbers);
private static void Sum(params double[] list)
{
double sum = 0;
foreach (double number in list)
{
sum += number;
}
Console.WriteLine(sum);
}
答案 2 :(得分:0)
如果它不是网络服务,您可以使用特殊关键字params
,例如
public double Sum(params double[] items)
{
//do sum
return answer;
}
但网络服务不知道params
的含义,因此您需要使用List<double>
或double[]
之类的内容,例如
public double Sum(List<double> items)
{
return items.Sum();
}