我正在將我們的一個node.js Azure函數移植到C#中,因此這是在.csx容器中運行的C#。我在本地的Windows函數模擬器中運行,並且在Azure的Functions運行時也嘗試了這兩個函數,兩者都顯示相同的編譯器錯誤。如何在C#Azure函數中將多個參數作爲數組傳遞?
我見過multipleotherquestions問類似的東西,但似乎有一些關於在.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中的數組沒有任何提及。
謝謝,我把它改成參數,它現在完美。 – Graham
出於好奇,在方法調用中使用ArrayList而不是對象數組有沒有祕密? – Graham
@Graham不,它應該是相同的:'var args = new ArrayList {param1,param2};' - 只要該方法以'ArrayList'作爲參數,當然。說起'ArrayList'的,那是你主要看不到過去的C#和/或遺留代碼的第一個版本的類。這可能是更地道使用'名單