問題タブ [public-fields]
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++ - パブリック ブースト::シグナル オブジェクト
私boost::signal
は怠け者なので公開します。
... でカプセル化するのではなく、Button::OnClicked(boost::function<void()>)
.
これは戻ってきて私を噛むつもりですか?
c# - public フィールドがプロパティよりも速いのはなぜですか?
XNA を調べていたところ、XNA 内のVector3
クラスがプロパティではなくパブリック フィールドを使用していることがわかりました。簡単なベンチマークを試してみたところ、struct
その違いは非常に劇的であることがわかりました (2 つのベクトルを 1 億回追加すると、プロパティで 2.0 秒、フィールドで 1.4 秒かかりました)。参照型の場合、違いはそれほど大きくないように見えますが、そこにあります。
では、それはなぜでしょうか。プロパティがメソッドにコンパイルされ、メソッド呼び出しのオーバーヘッドが発生することはわかっていget_X
ますset_X
。しかし、これらの単純な getter/setterは常にJIT によってインライン化されませんか? JIT が決定したことを保証できないことは承知していますが、確かにこれは確率のリストでかなり高いですか? マシン レベルでパブリック フィールドをプロパティから分離するものは他にあるでしょうか?
そして、私が疑問に思っていることの 1 つは、自動実装されたプロパティ ( public int Foo { get; set; }
) が public フィールドよりも「優れた」OO 設計である理由は何ですか? または、より適切に言えば、これら 2 つの違いは何ですか? リフレクションを使用するとプロパティにする方が簡単であることは知っていますが、他に何かありますか? 両方の質問に対する答えは同じだと思います。
ところで:私は.NET 3.5 SP1を使用しています.NET 3.5 SP1は、構造体を含むメソッド(または構造体のメソッド、よくわかりません)がインライン化されていない問題を修正したと信じています。少なくとも使用していると思います。確かにインストールされていますが、DX10.1を持っていないことを除いて、DX10.1が必要なSP1でVista 64ビットを使用しています..
また、ええ、私はリリースビルドを実行しています:)
編集:クイックアンサーに感謝しますが、プロパティアクセスがメソッド呼び出しであることは知っていますが、おそらくインラインメソッドが直接フィールドアクセスよりも遅い理由がわからないことを示しました。
EDIT 2 :したがってstruct
、明示的な GetX() メソッドを使用する別のメソッドを作成し(Javaの日々をまったく見逃さない方法)、インライン化を無効にしたかどうかに関係なく(を介して)同じように実行した[MethodImplAttribute(MethodImplOptions.NoInlining)]
ため、結論:非静的メソッドは、構造体であってもインライン化されないようです。
JITが仮想メソッド呼び出しを最適化できる例外があると思いました。継承を認識していない構造体でこれが発生しないのはなぜですか。したがって、メソッド呼び出しは可能なメソッドを 1 つしか指すことができません。それとも、インターフェースを実装できるからですか?
パフォーマンスが重要な要素にプロパティを使用することについて本当に考えさせられるので、これはちょっと残念ですが、フィールドを使用すると汚く感じるので、自分が行っていることを C で記述したほうがよいでしょう。
EDIT 3 :まったく同じ件名に関するこの投稿を見つけました。彼の最終的な結論は、プロパティ呼び出しが最適化されてしまったということです。callvirt
また、IL にいるにもかかわらず、単純なゲッター/セッター プロパティがインライン化されることを何度も読んだと断言できます。それで私は気が狂うのですか?
EDIT 4 : Reed Copsey が以下のコメントに回答を投稿しました。
Re: Edit3 - 私の更新されたコメントを参照してください: これは x86 JIT と x64 JIT の問題だと思います。x64 の JIT はそれほど成熟していません。より多くの 64 ビット システムが毎日オンラインになるため、MS がこれを迅速に改善することを期待しています。– リード・コプシー
そして彼の答えに対する私の答え:
ありがとう、これが答えです!x86 ビルドを強制しようとしましたが、すべてのメソッドが同等に高速で、x64 よりもはるかに高速です。これは実際には非常に衝撃的です.64ビットOSで石器時代に住んでいたとは思いもしませんでした..あなたのコメントを回答に含めて、より目立つようにします. – ジュリアンR
みんな、ありがとう!
c# - C#パブリックフィールドをプロパティにリファクタリングするためのツール
パブリックフィールドを使用するC#コードがたくさんあるので、それらをプロパティに変換したいと思います。
私はResharperを持っています、そしてそれはそれらを一つずつ行います、しかしこれは永遠にかかります。
これに役立つ自動リファクタリングツールを知っている人はいますか?
entity-framework - Entity Framework を使用した動的データ... [ScaffoldColumn(true)] を使用して、メタデータを介してパブリック プロパティを表示する
...まったく機能しません。私はフリックンのもののすべての異なる組み合わせで何日も試しましたが、それは動揺しません.
確かに、「拡張された EF クラスのパブリック プロパティを次の方法で表示できることは誰もが知っていることです」や「もしデータモデルを拡張して計算フィールドを表示したいのですが、単純に...」 - 私にとってはそれほど単純ではありません - うーん!!!
したがって、すべての典型的な例に従って、私の EF 部分クラスは次のようになります。
私の global.asax は次のようになります。
そして、私の List.aspx.cs は次のようになります。
...Dynamic Data Futures のバージョンを使用して、列の順序付け、より優れた検証などの機能を取得していますが、正常に動作しています。(例) List.aspx.cs (上に表示) にいくつかの調整を加え、日付の書式を変更して、NZ スタイルの日付が米国の Web サーバーで機能するようにしました。それ以外は、すべてかなり標準的です。
私の EF モデルは別のアセンブリに格納されており、(明らかに) 部分クラスを使用して一部のエンティティを拡張しています。計算された血まみれのフィールドを 2 つ表示したいだけですが、まったく成功していません。レンガの壁に頭をぶつけている新しいプログラマーのように感じます。古いトリックはどれも機能しません。プログラミングはそれほど難しくないはずです :-(
どなたか、どなたか、助けてください!!
バーナード。
objective-c - Objective-Cの別のクラスから@publicインスタンス変数にアクセスするにはどうすればよいですか?
@publicキーワードでパブリックインスタンス変数を定義できることは知っています。ただし、Objective-C構文では、他のクラスの変数にアクセスすることはできません。@public Ivarにどのような機能を期待する必要がありますか?または、他のクラスのIvarにアクセスするにはどうすればよいですか?
public-key - PGP 鍵情報の読み取り
説明だけがあり、実際の情報がない場合、誰かが pgp がどのように見えるかの情報の説明を示すことができますか? 次のようなもの(値が正しいかどうか覚えていません):
パケットタイプ[4ビット]、バイト単位の合計長[16ビット]、パケットバージョンタイプ[4ビット]、作成時間[32ビット]、暗号化アルゴリズム[8ビット]、...、など
rfc4880 を理解しようとしましたが、面倒でわかりにくいです。これまでのところ、上で書いた 4 つを抽出したと思いますが、残りの情報を引き出すことができないようです。
誰でも助けることができますか?いくつかの pgp プログラムを見つけることができることはわかっていますが、これの全体的なポイントは、それらのプログラムが最初にどのように機能するかを学べるようにすることです。
oop - プロパティの代わりにパブリック フィールドを使用する必要があるのはどのような場合ですか?
重複の可能性:
パブリック データ メンバーとゲッター、セッター
プロパティや getter および setter メソッドの代わりにパブリック フィールドを使用する必要があるのはどのような場合ですか (プロパティがサポートされていない場合)。それらの使用が推奨されている正確な場所は何ですか? また、推奨されていない場合、言語機能としてまだ許可されているのはなぜですか? 結局のところ、それらは、getter と setter が許可され奨励されているカプセル化のオブジェクト指向の原則を破っています。
dump - 無料の pgp キー ダンプ プログラムはありますか?
http://www.pgpdump.net/のようなMPI 値やその他の情報も表示するpgp キー ダンプ プログラムはありますか? リンクされたWebサイトのプログラムは...
長いMPIを出力しますが、これは完全に論理的ですが、私のプログラムは何らかの理由で1つの部分を除いてすべて正しく(elgamal公開鍵を読み取る)、すべてをいじっているため、値を確認したいと思います。それは後で来る。数ビットずれているところを確認したい
c++ - 特定の関数を非表示にするC++の方法
私は継承を持っていますstruct A : public B
、私はBから個々の関数を隠したいのですが、これは可能ですか?
私はusing BMethod
、A宣言で使用すると反対のことが可能であることを知っています。
乾杯
java - アクセスされたメソッドが Main クラスで public であっても、クラスの使用により「Type is not Visible」というエラーが発生する
Main.java ファイルがあります。
別のファイルからアクセスしようとすると、entityManager にのみアクセスしようとすると機能します。
しかし、entityManager から (パブリックであっても) 属性の 1 つにアクセスしようとすると、機能しません。
なぜ起こっているのか理解できません。誰かがこの問題について洞察を与えることができますか?...