フォントを作成した直後に破棄するのはなぜですか? (Dispose()もう使用しない場合は、呼び出す必要があります)。両方の例のコードを使用できます。 と を削除しても問題Dispose()ありませんusing。
Font f = new Font("Calibri", 10.0f);
textbox1.Font = f;
textbox2.Font = f;
label1.Font = f;
button1.Font = f;
または(コンストラクターが一種のキャッシュを管理しない限り、不要なリソースをより多く割り当てるため、効率がわずかに低下しますがFont、それについてはわかりません):
textbox1.Font = new Font("Calibri", 10.0f);
textbox2.Font = new Font("Calibri", 10.0f);
label1.Font = new Font("Calibri", 10.0f);
button1.Font = new Font("Calibri", 10.0f);
編集
リソースの破棄について少し注意してください: もちろん、可能な限り常にリソースを破棄する必要があります (単純なルールは、常にDispose()を実装するクラスを呼び出すことですIDisposable)。つまり、使用前ではなく、使用後に行う必要があります。このコードを見てみましょう:
var font = font;
textbox1.Font = font;
font.Dispose();
もちろんtextbox1、破棄されたオブジェクトへの参照があるため、機能しません(何が起こるかわかりませんObjectDisposedException。単に無視されましたか?)。Dispose()将来そのリソースを使用しない場合にのみ呼び出す必要があり、textbox1そのテキストを描画するために使用されるため、そうではありません。たとえば、適切な使用法は次のとおりです。
using (var font = new Font("Calibri", 10.0f))
{
e.Graphics.DrawText(Text, font, Brushes.Black, ClientRectangle);
}
この場合、ステートメントfont内のコードでのみ使用されusing、適切かつ安全に破棄できます (この場合、毎回作成することを避け、再利用する必要があります)。