如何在C#Azure函数中将多个参数作为数组传递?

时间:2017-08-29 19:19:37

标签: c# azure azure-functions

我将我们的node.js Azure功能之一移植到C#,因此这是在.csx容器中运行的C#。我在本地Windows函数模拟器中运行,并且还在Azure的函数运行时中尝试过这一点,两者都显示相同的编译器错误。

我已经看到multiple other questions提出了类似的问题,但是在.csx文件或函数运行时中运行似乎有些不同,因为没有任何答案可行。

这是我正在呼叫的方法签名:

DocumentClient.ExecuteStoredProcedureAsync<TValue> Method (Uri, Object[])

这是run.csx的工作代码:

string param1 = "param1";
string param2 = "param2";

// object[] params = {"param1", "param2"};

var response = await client.ExecuteStoredProcedureAsync<object>(
  sprocUri,
  param1,
  param2
);

当我尝试将两个参数添加到数组中并取消注释行object[] params = {"param1", "param2"};时,我从编译器中收到此错误:

run.csx(72,14): error CS1001: Identifier expected
run.csx(72,14): error CS1003: Syntax error, ',' expected
run.csx(72,21): error CS1002: ; expected
run.csx(72,21): error CS1525: Invalid expression term '='
run.csx(72,23): error CS1525: Invalid expression term '{'
run.csx(72,23): error CS1002: ; expected
run.csx(72,32): error CS1002: ; expected
run.csx(72,32): error CS1513: } expected
run.csx(72,42): error CS1002: ; expected
Compilation failed.

(第72行对应于数组赋值语句)

我已经尝试了所有这些不同的方法来定义数组,但我得到了类似的错误:

Object[] params = {"param1", "param2"};
object[] params = new[] {"param1", "param2"};
object[] params = new[] {param1, param2};
string[] params = {"param1", "param2"};
string[] params = new string[] {"param1", "param2"};
dynamic[] params = new[] {"param1", "param2"};

Azure功能是否有不同之处需要不同类型的数组定义? C# Developer Reference中没有提到有关数组的内容。

1 个答案:

答案 0 :(得分:2)

您面临的问题是您将变量params命名为C#中的保留字(请参阅params (C# reference))。尝试使用其他名称。

如果你真的开始使用params,你可以使用一个@前缀,可以在C#中使用它来创建一个标识符,否则它将是一个保留字:

object[] @params = { param1, param2 };