2017-08-29 18 views
1

私はnode.js Azure関数のいずれかをC#に移植しています。したがって、これはC#で、.csxコンテナで実行されています。私は、ローカルのWindows関数エミュレータで実行しているし、これもAzureの関数ランタイムで試したが、どちらも同じコンパイラエラーを示しています。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 
); 

私は配列に2つのparamsを追加しようとすると

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. 

(ライン:その後、私は、コンパイラからこのエラーを取得する行のコメントを外しobject[] params = {"param1", "param2"};配列代入文の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の配列については何も言及されていません。

答えて

2

あなたが直面する問題は、C#の予約語である変数paramsの名前を付けたことです(params (C# reference)参照)。別の名前を使用してみてください。

あなたが本当にparamsを使用して設定する必要があり、あなたはおそらくそれ以外の場合は予約語になり識別子を作成するためにC#で使用することができます@接頭使用することができます

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

をおかげで、私はそれを変更しましたargsとそれは今完全に動作します。 – Graham

+0

好奇心から、メソッド呼び出しでオブジェクト配列の代わりにArrayListを使用する秘密はありますか? – Graham

+0

@Grahamいいえ、それは同じでなければなりません: 'var args = new ArrayList {param1、param2};' - メソッドが 'ArrayList'を引数として取る限り、もちろんです。 'ArrayList'といえば、それはあなたがC#やレガシーコードの最初のバージョンを過ぎて見ないクラスです。 'List 'を使って ''型があるのではなく、 ''型がありますが ''表現できません ''' ArrayList'の意味を表現する方が慣れているかもしれません。しかし、これは、メソッドのシグネチャを変更できる場合にのみ発生します。 –

関連する問題