2012-03-07 26 views
0

我有以下的Web服務功能 -發送多個整數Web服務功能

[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

考慮使用double.TryParse - 如果文本未格式化爲double,則double.Parse會引發異常。 – Polyfun 2012-03-07 10:13:15

回答

0

如果這不是一個Web服務,你可以使用一個特殊的關鍵字params,像

public double Sum(params double[] items) 
{ 
    //do sum 
    return answer; 
} 

但Web服務不知道是什麼意思params所以你需要使用像List<double>double[],例如

public double Sum(List<double> items) 
{ 
    return items.Sum(); 
} 
0

您可以更改簽名以獲取字符串而不是兩個雙打。

如果您在客戶端解析雙打,另一種選擇是更改接受雙精度參數數組的方法。

[OperationContract] 
double Sum(params double[] myParams); 
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); 
}