問題タブ [params-keyword]
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.
c# - このコードがコンパイルされるのはなぜですか?
次のようなメソッドを定義するとします。
このように呼び出してみると、明らかにエラーが発生し、コードはコンパイルされません。
メソッド 'ListInts' には 1 つのパラメーターがありますが、0 の引数で呼び出されます
しかし、次のようにメソッド定義を変更すると:
エラーはありません。なぜこれが起こっているのか知りたいです。そして、2 番目のコードがエラーなしでコンパイルされるのはなぜですか? params
キーワードを使用すると、舞台裏で何が起こるでしょうか?
c# - 何も渡されなかったか、F(params String[] 値) に 1 つの null が渡されたかを区別できますか?
私には機能があります
これは、すべての に対するフィルタとして機能しますItem
。
そのため、 eg を呼び出すと、最初のエントリとしてFilter("prop1")
すべてItem
の s の"prop1"
プロパティが一致します。
を呼び出すFilter()
と、すべてItem
の s が返されます。
また、値を一致させる必要がありnull
ます。たとえば、今すぐ呼び出すFilter(null, null)
と、最初のプロパティとしてすべてItem
の snull, null
が一致します。
を呼び出す場合を除いて、これはすべて機能しますFilter(null)
。と同じように解釈されますが、前者は最初のプロパティとしてすべての s を返し、後者はすべての s をFilter()
返すことを意図しています。Item
null
Item
これに対処するためにオーバーロードを定義してみました
しかし、コンパイラは、Ambiguous Invocation
呼び出し時にエラーを表示するだけFilter(null)
です。
c# - C#で呼び出し元情報とともにparamsキーワードを使用するには?
C# 5.0 Caller Information と C# params キーワードを組み合わせようとしています。意図は、ロギング フレームワークのラッパーを作成することであり、ロガーでテキストを String.Format のようにフォーマットする必要があります。以前のバージョンでは、メソッドは次のようになりました。
これを次のように呼びます。
ここで、発信者情報をキャプチャしてログに記録したいと考えています。したがって、署名は次のようになります。
params は最後のパラメーターでなければならないため、これはコンパイルされません。だから私はこれを試します:
sourceMembername を提供するか、名前付きパラメーターとして明示的に messageArgs 引数を割り当てることなく、それを呼び出す方法はありますか? これを行うと、params キーワードの目的が無効になります。
これを行う方法はありますか?発信者情報が渡される「ハッキー」な方法では、params キーワードを使用できないようです。呼び出し元のメンバー情報パラメーターが実際にはパラメーターではないことを C# コンパイラが認識できれば、すばらしいことです。それらを明示的に渡す必要はないと思います。
私のバックアップは params キーワードをスキップすることであり、呼び出し元は最後の例で長い署名を使用する必要があります。
c# - 空である可能性のある一連の文字列変数を配列する最も簡潔な方法は何ですか?
このようなアドホックな文字列セットを配列する必要があります
null または空の文字列を含めません。私は子関数を使用できることを知っていますparams
:
しかし、私が見ていないこれを行う簡単な方法はありますか?
編集: 申し訳ありませんが、最初の LINQer に投票して喜んでいますが、単純化するのではなく、子メソッドを完全に取り除こうとしていることを指定する必要がありました。
android - AndroidのdoInBackground asyncTaskで(String ... params)引数リストを変更するにはどうすればよいですか?
デフォルトでは、asyncTask の api から、その署名は doInBackground(Param ...params) です。
私のアプリでは、次の署名があります。
私は試して、これに変更しました:
しかし、それは私にエラーを与えます:
クラス DataTasker は抽象宣言するか、抽象メソッド 'doInBackground(Params...params) を実装する必要があります
私はこの3つのドットが配列であることを知っており、次のようにアクセスできます
params[0]、params[1]。
しかし、まだ混乱しています。メインのアクティビティ クラスで、バックグラウンド タスクにこのデータを渡したいと思います: 文字列 、整数
しかし、どうやら、引数を1つだけ渡す必要があります
c# - 名前空間の問題 (} がありませんか?) と、配列を表示するメソッドにパラメーターを渡す
私のコードの2つの問題:
1- Main() の Console.Writeline で奇妙な構文エラーが発生し、右中括弧 '}' が欠落していると思われます
2- Main() の後の最初のメソッドがわかりません。配列の要素を書き込む単純な void メソッドのはずですが、Visual Studio はエラーからクラスまたは名前空間のいずれかであると認識しているようです。
私が失敗した場所を誰か見つけられますか?
編集:みんなありがとう!そこにあるいくつかの変数とメソッドの名前を変更するのを忘れていましたが、主な問題は欠落していました。Main() の引数として不要なデータ型。
c# - params インデクサーの実用的な使い方
最近、インデクサーが引数の配列を次のように受け入れることができることがわかりましたparams
。
次に、次のことができるようになります。
ただし、.NET Framework やサードパーティのライブラリでそのような使用法に遭遇したことはありません。なぜそれが実装されたのですか?params
インデクサーを導入できることの実際の使用法は何ですか?
c# - 動的パラメーターを params パラメーターに再渡すとビルドに失敗する理由
params キーワードを使用して動的パラメーターをメソッドに再渡すと、ソリューションのビルドに失敗します。.NET 4.6 と VS2015 を使用していますが、以前のバージョンの .NET Framework でも問題が発生します。エラー リストにエラーは表示されず、一番下に「ビルドに失敗しました」というメッセージが表示されます。
これは私が実行しようとしているサンプルコードです:
誰かが最初の呼び出しの何が問題なのか説明できますか?
編集1:
Dave から提供されたサンプルを使用して新しいソリューションを作成しましたが、問題なくビルドできます。しかし、私の解決策では、「閉じて、きれいにして、ビルド」した後でも問題が解決しません。文字列、オブジェクト、ダイナミックなどを渡すかどうかは問題ではありません。以下の画像では、メソッドへの呼び出しはなく、ソリューションはまだビルドされていません。
c# - params 配列パラメーターを使用した WCF 操作コントラクト
この男は私と同じ問題を抱えていると思いますが、明確にする必要があります。
とにかく、オブジェクトの params 配列と書式設定文字列を使用して String.Format と同じ方法で文字列を受け取る WCF 操作コントラクトを作成しようとしています。そうすれば、次のように操作を呼び出すことができます。
このようにする代わりに:
基本的に、オペレーション コントラクト メソッドは文字列を受け取りますが、便宜上、文字列をフォーマットされた形式で渡せるようにしたいだけです。関数を明示的に作成するだけでよいため、通常のメソッドではうまく機能しますが、WCF では、最初にこれをインターフェイス形式で記述しなければならないという課題があります。他の人は、すべてのオブジェクトがシリアライズ可能であるとは限らないと言いました。これを行うことは可能ですか?