# 如何正確地呼叫需要傳入 string[] 引數的 ASP.NET WebService 方法？

假設我們有一個 ASP.NET WebService （.asmx）方法，這個方法需要傳入 `string[]` 型態的資料，其宣告如下：

```csharp
[WebMethod]
public string ConcatString(string[] strArray)
{
    return string.Join(", ", strArray);
}
```

若我們想從其他專案中呼叫這個 WebService 方法，我們需要先加入服務參考。在此之前，我們可能會誤以為 `ConcatString()` 方法需要傳入 `string[]`，因此可能會這樣呼叫：

```csharp
var client = new WebService1SoapClient();
var input = new string[] { "a", "b", "c" };

var result = client.ConcatString(input); // 錯誤寫法
```

然而，這樣會導致編譯器報錯。IntelliSense 會提示我們應該傳入一個 `ArrayOfString` 型別。

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1682423635346/9a267cc8-ab75-4007-93a4-4a5d49ee9e48.png align="center")

根據 IntelliSense 的提示，我們應該這樣修改程式碼：

```csharp
var client = new WebService1SoapClient();
var input = new string[] { "a", "b", "c" };

var arrayOfString = new ArrayOfString();
arrayOfString.AddRange(input);
var result = client.ConcatString(arrayOfString);
```

通過上述修改，我們就能正確地呼叫需要傳入 `string[]` 引數的 ASP.NET WebService 方法。

參考資料：

* [Passing string array to webservice method](https://stackoverflow.com/a/12995571)
