如何在C#Azure函数中以数组形式传递多个参数?
我正在将一个node.js Azure函数移植到C#,因此这是在.csx容器中运行的C。我在本地Windows函数模拟器中运行,并且在Azure中的函数运行时中也尝试过这一点,两者都显示相同的编译器错误 我见过类似的问题,但在.csx文件或函数运行库中运行似乎有些不同,因为所有答案都不起作用 这是我正在调用的方法签名:如何在C#Azure函数中以数组形式传递多个参数?,c#,azure,azure-functions,C#,Azure,Azure Functions,我正在将一个node.js Azure函数移植到C#,因此这是在.csx容器中运行的C。我在本地Windows函数模拟器中运行,并且在Azure中的函数运行时中也尝试过这一点,两者都显示相同的编译器错误 我见过类似的问题,但在.csx文件或函数运行库中运行似乎有些不同,因为所有答案都不起作用 这是我正在调用的方法签名: DocumentClient.ExecuteStoredProcedureAsync<TValue> Method (Uri, Object[]) (第72行对应于
DocumentClient.ExecuteStoredProcedureAsync<TValue> Method (Uri, Object[])
(第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函数是否需要不同样式的数组定义?在中没有提到数组。您面临的问题是,您将变量命名为
params
,它是C#中的一个保留字(请参阅)。尝试使用其他名称
如果您真的开始使用参数
,您可以使用@
前缀,该前缀可以在C#中使用,以创建一个标识符,否则该标识符将是一个保留字:
object[] @params = { param1, param2 };
谢谢,我把它改成了args,现在它工作得很好。出于好奇,在方法调用中使用ArrayList而不是object数组有什么秘密吗?@Graham没有,应该是一样的:
var args=new ArrayList{param1,param2}代码>-当然,只要该方法将ArrayList
作为参数。说到ArrayList
,这是一个在C#和/或遗留代码的第一个版本之后您几乎看不到的类。使用List
来表达ArrayList
的语义“我真的不知道类型”,而不是“有某种类型,但我无法表达它”,可能更为惯用。但这只是在您可以更改方法签名的情况下。
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"};
object[] @params = { param1, param2 };