問題タブ [nameof]
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# - C#nameof演算子はインスタンスなしでインスタンスプロパティを参照できますか?
インスタンスがない場合、型のインスタンス プロパティの名前を定期的に取得したいと考えています。現在これを行うために、パラメーターを解釈しExpression[Func[T, object]]
てプロパティ名を返す次の社内関数を使用しています。
nameof
ただし、組み込みの演算子を使用しないのは残念です。
残念ながら、nameof
オペレーターはインスタンスを必要とするか、静的プロパティを参照する必要があるようです。
nameof
社内関数の代わりに演算子を使用する適切な方法はありますか? 例えば:
編集
私は完全に間違っていましたnameof(ClientService.EndDate)
。説明されている構文は実際にはそのまま機能します。
c# - 式と名前
プロパティ名の抽出にnameof
overを使用することをお勧めします。expressions
でも呼び方が違う
それぞれのアプローチについて、どのような長所と短所を知っていますか? それとも実行速度だけが問題ですか?つまり、コンパイル後nameof
に値に置き換えられます。const
c# - C# - 引数を指定せずにメソッドを引数として取る
関数とその所有者クラスを入力引数として取り、その名前をリフレクションで処理する必要があるメソッドがあります。もちろんstring
、入力引数として s をいくつか取ることもできるので、メソッドは次のようになります。
次のように呼び出されます。
nameof
しかし、メソッドを呼び出そうとするたびにキーワードを書かないようにする方法はあるのだろうか。私にとってProceed<Foo>(f => f.Bar)
は、もっと素敵に見えるようなものです。
これは式で解決できると思います。私が直面している問題は、メソッドに引数がある場合、メソッドを呼び出すときにそれらを明示的に指定する必要があることです (後でメソッドの名前Bar
だけが必要になる私の場合、これは過剰に思えます)。
だから、私が見つけた最良の解決策はこれです:
それでも、それ自体の引数で引数メソッドのシグネチャを指定しているため、十分に汎用的ではありません。
引数を指定せずに関数を引数として渡す方法があるかどうか疑問に思います (nameof
キーワードと同様に、後でその名前のみが必要になる場合)。
c# - プロパティを関数の引数として渡し、内部で名前を文字列に変換します
関数パラメーターとして可能な型を渡すことができるようにしたいと思います。
現在、プロパティの受け渡しに問題があります。
nameof(Foo.Bar) を使用できますが、A で nameof が使用される A(Foo.Bar) を実行できません。
文字列がプロパティから作成されていることを確認したいのですが、プロパティを API に渡し、API 内で nameof を実行したいと考えています。
関数を介して nameof にプロパティを渡す可能性はありますか? 準備が整った文字列を取得する代わりに、クラス内でプロパティから文字列への変換を非表示にしたいと考えています。それをどのように達成しますか?
編集:手がかりは次のとおりです:
代わりに [?] を入れて、コンソール出力を次のようにします。
c# - nameof 演算子を使用して params 配列のパラメータの名前を暗示することは可能ですか?
私は、新しい c# 6 演算子 nameof を利用して、params 配列から暗黙的にキー/値の辞書を作成できると考えました。
例として、次のメソッド呼び出しを考えてみましょう。
params 配列から要素の名前を暗示できる Test の実装があるかどうかはわかりません。
nameof
リフレクションなしでjust を使用してこれを行う方法はありますか?
java - Java で同等の名前
C# 6.0 では、nameof()
内部に配置された任意のクラス / 関数 / メソッド / ローカル変数 / プロパティ識別子の名前を表す文字列を返す演算子が導入されました。
このようなクラスがある場合:
次のように演算子を使用できます。
コンパイル時に正しい文字列がチェックされるため、これは便利です。プロパティ/メソッド/変数の名前のスペルを間違えると、コンパイラはエラーを返します。また、リファクタリングすると、すべての文字列が自動的に更新されます。たとえば、実際の使用例については、このドキュメントを参照してください。
Javaにその演算子に相当するものはありますか? それ以外の場合、どうすれば同じ結果 (または同様の結果) を得ることができますか?