如何在 C# Azure 函数中将多个参数作为数组传递?
How to pass multiple parameters as an array in a C# Azure Function?
我正在将我们的 node.js Azure Functions 之一移植到 C#,所以这是 .csx 容器中的 C# 运行。我在本地 Windows 函数模拟器中 运行 并且也在 Azure 的函数运行时中尝试过这个,两者都显示相同的编译器错误。
我曾看到 multiple other questions 问过类似的问题,但 .csx 文件或函数运行时中的 运行 似乎有所不同,因为答案的 none 有效。
这是我正在调用的方法签名:
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 Functions 在需要不同样式的数组定义方面有什么不同吗? C# Developer Reference.
中没有提到数组
您面临的问题是您将变量命名为 params
,这是 C# 中的保留字(请参阅 params (C# reference))。尝试使用不同的名称。
如果您真的打算使用 params
,您可以使用 @
前缀,它可以在 C# 中用于创建一个标识符,否则它将是一个保留字:
object[] @params = { param1, param2 };
我正在将我们的 node.js Azure Functions 之一移植到 C#,所以这是 .csx 容器中的 C# 运行。我在本地 Windows 函数模拟器中 运行 并且也在 Azure 的函数运行时中尝试过这个,两者都显示相同的编译器错误。
我曾看到 multiple other questions 问过类似的问题,但 .csx 文件或函数运行时中的 运行 似乎有所不同,因为答案的 none 有效。
这是我正在调用的方法签名:
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 Functions 在需要不同样式的数组定义方面有什么不同吗? C# Developer Reference.
中没有提到数组您面临的问题是您将变量命名为 params
,这是 C# 中的保留字(请参阅 params (C# reference))。尝试使用不同的名称。
如果您真的打算使用 params
,您可以使用 @
前缀,它可以在 C# 中用于创建一个标识符,否则它将是一个保留字:
object[] @params = { param1, param2 };