問題タブ [readonly]

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 投票する
5 に答える
53808 参照

.net - 既に開いているファイルを .net StreamReader で開くにはどうすればよいですか?

テスト ベンチの一部として使用している .csv ファイルがいくつかあります。ファイルを Excel で開いていない限り、問題なく開いて読むことができます。その場合は、次のようになりIOExceptionます。

System.IO.IOException : 別のプロセスで使用されているため、プロセスはファイル 'TestData.csv' にアクセスできません。

これは、テスト ベンチからの抜粋です。

これは StreamReader の制限ですか? 他のアプリケーション (Notepad++ など) でファイルを開くことができるので、O/S の問題にはなりません。たぶん、他のクラスを使用する必要がありますか?誰かがこれを回避する方法を知っていれば(Excelを閉じることは別として!)、とても感謝しています。

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

c# - 読み取り専用に実行時のオーバーヘッドはありますか?

何らかの理由で、フィールドにはオーバーヘッドが関連付けられていると常に想定してきました。これは、フィールドが初期化されているreadonlyかどうかを追跡する CLR と考えられていました。readonlyここでのオーバーヘッドは、状態を追跡するための余分なメモリ使用量と、値を割り当てるときのチェックです。

おそらく、フィールドがコンストラクター内またはフィールド宣言自体内でのみ初期化できることを知らなかったためreadonly、実行時チェックなしでは、さまざまな方法で複数回割り当てられていないことを保証できないため、これを想定しましたメソッド。しかし、今ではこれを知っています。C# コンパイラで簡単に静的にチェックできますよね? そうですか。

もう1つの理由は、の使用がパフォーマンスに「わずかな」影響を与えることを読んだことがありますreadonlyが、彼らはこの主張に関与したことがなく、この件に関する情報を見つけることができないため、私の質問です. 実行時チェック以外にパフォーマンスにどのような影響があるかはわかりません。

3 番目の理由は、それreadonlyがコンパイルされた IL に として保存されていることを確認したinitonlyことです。したがって、この情報が IL に含まれる理由はreadonly、フィールドが外部に割り当てられないという C# コンパイラによる保証にすぎない場合はどうなるでしょうか。コンストラクタまたは宣言?

一方、readonly intCLR が例外をスローすることなく、スルー リフレクションの値を設定できることがわかりました。これreadonlyは、ランタイム チェックの場合は不可能です。

だから私の推測は次のとおりです。「読み取り専用」はコンパイル時の機能にすぎません。誰でもこれを確認/拒否できますか? もしそうなら、この情報が IL に含まれる理由は何ですか?

0 投票する
8 に答える
54752 参照

c# - リフレクションを使用して C# のプライベート読み取り専用フィールドを変更できますか?

リフレクションを使用して多くのことができるので、コンストラクターの実行が完了した後にプライベート読み取り専用フィールドを変更できますか?
(注:ただの好奇心)

0 投票する
7 に答える
23996 参照

c# - C# は get から読み取り専用として変数を返します。設定;

私はこれの例を見たことを誓いますが、少しの間グーグルで探していて、見つけることができません.

オブジェクトへの参照があり、GET が必要なクラスがあります。そのための方法。私の問題は、誰もそれをいじることができないようにしたいということです。つまり、読み取り専用バージョンを取得してもらいたいのです (クラス内から変更できるようにする必要があることに注意してください)。

ありがとう

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

javascript - 読み取り専用の入力フィールドは、IE6 で OnKeyPress を起動しません。

Enter キーの特別な動作を実装しています。問題は、私の ASP.net ライブラリが読み取り専用フィールドを生成することです。ユーザーがこのフィールドにタブで移動し (タブで移動するのは意味があるので、その動作が必要です)、Enter キーを押してフォームを送信すると、読み取り専用フィールドであるため送信されません。

通常の onkeypress=checkEnter をフックする回避策を書きましたが、IE6 はまだこのイベントを発生させません。Firefoxはそうします。

IE6 読み取り専用フィールドで Enter を検出するにはどうすればよいですか?

ありがとう!

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

.net - .NET の読み取り専用配列

配列は、順序付けされていないアイテムのセットを反復処理するための高速な方法であり、多くの場合、読み取り専用であると便利です。配列の内容は変更される可能性があるため、「readonly」キーワードで配列を公開しても意味がありませんが、ReadOnlyCollection<T> ラッパーがこれを解決します。問題は、私が行ったテストでは、単純な配列よりも 4 倍遅いことです。(配列のコピーを返すと、パフォーマンスが低下するのは 1 回だけですが、理想的には、そのために CPU 時間を無駄にしたくありません。)

次のようなクラスを持つプレーン配列のパフォーマンスを維持しながら、読み取り専用の健全性チェックの利点を得ることができることに気付きました。

問題は、foreach() 構文の便利さを失っていることです。つまり、パフォーマンスを維持するために for(;;) ループで反復する必要があります。-- 以前は、すべてのループが for(;;) である C コードを書いていました。甘やかされてしまったのかな。-- IEnumerable<T> を実装すると、ReadOnlyCollection<T> と同じパフォーマンスが得られますが、このクラスは役に立ちません。

読み取り専用のサニティ チェック、パフォーマンスの低下なし、便利な foreach() 構文という 3 つの目標すべての完璧な組み合わせを達成する方法はありますか?

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

wpf - WPF TextBoxでVS出力ウィンドウのテキストボックスを模倣する際の問題

Visual Studio の出力ウィンドウでは、テキスト キャレットを出力の最後に配置して、新しいテキストがログに記録されたときにテキスト ボックスが自動的に下にスクロールするようにすることができます。また、キャレットが最後にない場合、スクロールダウンしません。これを WPF TextBox で模倣したいと思います。

私はそれを行うことができましたが、TextBox が読み取り専用でない場合のみです。これは、キャレットが必要なためです。読み取り専用の TextBox がある場合、キャレットは表示されません。

問題は、テキストボックスが編集可能 (コピー/切り取り/貼り付けコマンドと入力) であることですが、編集したくありません。

きれいな解決策はありますか?TextBox がフォーカスされているときに動作する必要がある CommandBindings があるため、すべてのキーをブロックしないことをお勧めします。

ありがとう

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

eclipse - Eclipse で読み取り専用エディターを作成する方法 (Eclipse プラグイン開発)

本当に読み取り専用の Eclipse エディターを作成する方法を考えています。私のエディターはTextEditorを拡張するため、メソッドisEditableを再実装すると、常にfalseが返されます。

これは最も簡単な方法であり、ユーザーがエディターで開いたドキュメントに何かを入力したり削除したりできないようにします。ただし、たとえば検索/置換を使用して、ドキュメントのコンテンツを変更することはできます。そして、これは望ましくありません..

この目標を達成するための他の簡単な方法はありますか?

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

asp.net - ASP.NET - Enabled=False の場合、ラベルの TextBoxes を交換する

セットアップ: 多くの TextBox コントロールを含む Web フォーム。

TextBox コントロールの Enabled プロパティのいずれかを False に設定すると、実行時にその TextBox をラベルに「交換」したいと思います。とにかく読み取り専用の場合は、編集用に設計されたコントロールに表示しないでください。

これは非常にシンプルで再利用可能であるべきだと思いますが、これを行う最善の方法は何ですか?