問題タブ [paramarray]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
2995 参照

vb.net - ParamArray の値を byRef として処理して更新できるようにする方法はありますか?

十分に単純に聞こえますが、機能していません。この例では、3 つのフィールドの値を 4 番目に等しくなるように設定します。私はこのようなことをすることができます....

...しかし、それはちょっと冗長です (ええ、私は知っています、ほとんどの場合、vb は冗長です)。これを1行の呼び出しに減らすために使用できるものが欲しいので、この拡張メソッドを作成しました。

簡単そうに見えますよね?さて、出来上がりは・・・

param 配列の値が戻り時に更新されませんでした! 関数のように、すべての最終値が「1」になることを期待していました。

このような更新可能な ParamArray コレクションを取得する方法はありますか? ParamArray は ByVal として宣言する必要がありますが、String のような参照型では、ポインターのコピーを作成するだけで、基になる値を変更できるのではないでしょうか?

私が欲しいものを手に入れるためのより良い方法はありますか?(C# はこのオプションではありません)。

0 投票する
2 に答える
12844 参照

excel - ParamArray ArgList() の可変数の引数

配列を介して ParamArray arglist に多数の値を渡したい場合、どうすればよいですか? これまでに読んだことから、VBA では、渡したい値を明示的にリストする必要があるようです。しかし、渡す値の数が異なる可能性があるため、関数に渡す値の数が事前にわからない場合はどうすればよいでしょうか? 可変次元の配列(一次元配列)を利用する方法はありませんか?

0 投票する
2 に答える
3649 参照

vb.net - デリゲートと ParamArray - 回避策の提案?

一部の定義済みメソッドには、署名にParamArrayが含まれています。ただし、デリゲートの署名に ParamArray を含めることはできません。

質問: ParamArray を必要とする特定のメソッドの委任メカニズムを作成したいとします。この制約をどのように回避しますか?

EDIT:明確にするために、メソッドシグネチャ自体を変更できないと仮定します(Microsoftかどうかに関係なく、サードパーティによって定義された事前定義されたメソッド)。

EDIT2:次のコードは機能しますが、砂糖を排除するため、ここでの本当の取引は構文 sugar を維持することです:

EDIT3: Skeet のソリューションは、ParamArray を含むイベントとオペレーターの作成にも適用できることがわかりました。

0 投票する
1 に答える
1028 参照

.net - ParamArray が COM で動作しない

次のように COM に公開されるクラス ライブラリがあります。

次に、 regasm /tlb /codebase を使用して登録しました。すべてのメソッドとプロパティは VBA/VB6 で正しく動作しているように見えますが、ParamArray を使用してメソッドにアクセスしようとすると、イベント コンパイルが行われません。エラーが発生します:

コンパイル エラー:

関数またはインターフェイスが制限付きとしてマークされているか、関数が Visual Basic でサポートされていないオートメーション型を使用しています。

このメソッドを適切に公開して、このように使用できるようにするにはどうすればよいですか?:

0 投票する
4 に答える
1235 参照

vb.net - 汎用引数の param 配列 (可変数の引数) を取る関数を実装する方法

IDisposable オブジェクトを取り、それに対して dispose を呼び出すジェネリックな dispose メソッドを実装した質問をここで見ました。これを可変数の引数を取ることができるようにしたいと思います。ただし、コンパイル時に引数を IDisposable に制限したいと思います。(これは、私の組織の一部の人々が、IDisposable 以外のオブジェクトに対してもこのメソッドを呼び出すことになるためです。「安全のために」「害はありません」)

私はこのようにVBで同じことを実装しました。複数の引数を取るにはどうすればよいですか。変数を何も設定していないため、それらを参照渡ししたいことに注意してください。

0 投票する
4 に答える
16355 参照

asp.net-mvc - jQuery ajax/load で配列パラメーターを送信する

public ActionResult DoSomething(string[] arr, bool someBool, int someInt) { }

jQueryから上記のメソッドを呼び出そうとしています:

配列パラメーターは null です。他のパラメーターは問題ありません。私は何を間違っていますか?

Chrome デベロッパー ツールは、送信されたフォーム データを次のように表示します。

そこで何が起こっているのかわかりませんが、私には正しく見えません

0 投票する
3 に答える
2286 参照

vb.net - ParamArrayByRefの使用

ParamArray ByRefを使用する方法はありますか?それを除けば、同じことを達成する回避策はありますか?

私はいくつかの過負荷を行うことができましたが、私は不器用さを避けようとしています。

背景:古いコードを移植し、可能な限り同じ構造を維持しようとしています。


編集

私が欲しいものの具体例:

私はvb.netに移植しているturboBasicにいくつかのコードを持っています。コードには、次のような関数が組み込まれています。

ここで、Input()はファイル#1を取得し、そこから3つのデータを読み取り、表示されている3つの変数に割り当てます。この動作を自分のInput()関数で再現したいと思います。そのためには、3つ(またはそれ以上またはそれ以下)の変数を取り込んで、それらに値を割り当てるにはどうすればよいですか?

理想的には、Input()の独自の定義を変更するだけでこれを実現できるので、コードベースをできるだけ少なくすることができます。

0 投票する
3 に答える
2298 参照

vb.net - ParamArray を受け入れるメソッドに要素の動的数を渡す方法

ParamArray を受け入れるメソッドを呼び出す必要があります。

XmlDocument 内の可変数の XmlNodes に基づいて、2 つの既知の文字列と不明な数の文字列を渡す必要があります。

すなわち

これどうやってするの?

ノードをループして作成して渡してみました:

List(Of String)その結果elements()"Known String 1", "Known String 2", System.Collections.Generic.List[System.String]

List(Of String).ToArrayその結果elements()"Known String 1", "Known String 2", System.String[]

String()その結果elements()"Known String 1", "Known String 2", System.String[]

Collectionその結果elements()"Known String 1", "Known String 2", Microsoft.VisualBasic.Collection

私が欲しいのは、3つのノードの例として、elements()含めることです"Known String 1", "Known String 2", "<node 1>", "<node 2>", "<node 3>"

これは可能ですか?

0 投票する
1 に答える
118 参照

c# - これを関数に短縮します

このプログラムは、WMIデータを一連のクラス(コンピューターのハードウェア要素ごとに1つのクラス)に編成し、特定のハードウェア要素が複数存在する場合、各クラスは複数回初期化されます。

コードのこのセクションをいくつかの関数呼び出しに変換するための優れた方法はありますか?CreateComponent(ref object dataClass, params string[] WMIClasses);私は、WMIデータの一時ストアを使用して各インスタンスを追加するためのforループを作成するのではなく、コンピューターコンポーネントを初期化するための方針に沿って何かを考えていました。

0 投票する
1 に答える
1264 参照

vb.net - 二重配列への文字列

私はこの文字列を取る必要があります:

そしてそれをdouble配列に変換します:

どうすればそれを行うことができますか?

参考までに、arrNumOfVisitsはParamArray System.Collections.IEnumerable()に入ります

デビッド