【问题标题】:How to pass multiple parameters as an array in a C# Azure Function?如何在 C# Azure 函数中将多个参数作为数组传递?
【发布时间】:2017-08-29 19:19:37
【问题描述】:

我正在将我们的一个 node.js Azure Functions 移植到 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 Functions 是否需要不同风格的数组定义? C# Developer Reference 中没有提到数组。

【问题讨论】:

    标签: c# azure azure-functions


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢,我把它改成 args 了,现在可以正常使用了。
    • 出于好奇,在方法调用中使用 ArrayList 而不是对象数组有什么秘诀吗?
    • @Graham 不,它应该是相同的:var args = new ArrayList { param1, param2 }; - 当然,只要该方法将ArrayList 作为参数。说到ArrayList,这是一个在 C# 和/或遗留代码的第一个版本之后你几乎看不到的类。使用List&lt;object&gt; 来表达“我真的不知道类型”而不是ArrayList 的“有某种类型但我无法表达”语义可能更惯用。但前提是您可以更改方法签名。
    猜你喜欢
    • 2010-09-05
    • 1970-01-01
    • 2011-02-12
    • 2010-10-01
    • 1970-01-01
    • 2016-06-12
    相关资源
    最近更新 更多