お題はこちら
http://d.hatena.ne.jp/matarillo/20110307/p1
正直難しいです…が、「C#できます」と言える様になりたいので恥を承知で答えて行きたいと思います。
わからない・自信がない部分に関しては後で調べて補足を追記していく予定です。
2011/03/08 補足を追記しました。
- Q. 演算子のオーバーロードを実装してEqualsメソッドと同じ処理を実行するようにしてもよい場合はどのような時か?
- A.
Object.Equalsメソッドをオーバーライドした時。- (調べました)Immutableなオブジェクトの場合。
まだなにもしてないよね さんで詳しい回答をされていますので詳細はそちらをご覧ください。
- (調べました)Immutableなオブジェクトの場合。
- A.
- Q. ループ内でなければ、たとえ100個の文字列型変数であってもまとめて+演算子で連結してよい理由を説明せよ。
- A.
わかりませんでした。- (調べました)コンパイル時に一回のString.Concatメソッドの呼び出しに最適化されるから。
こちらも まだなにもしてないよね さんの回答が詳しく記載されていて参考になります。
- (調べました)コンパイル時に一回のString.Concatメソッドの呼び出しに最適化されるから。
- A.
- Q. Full GC(Gen2 GC)が動作したときに断片化していてもコンパクションされないヒープ領域はどのような領域か?
- A.
わかりませんでした。- (調べました)ラージオブジェクトヒープ領域。 85,000byte以上の大きなオブジェクトの場合はこの領域に確保されコンパクションされません。コンパクションされない理由はパフォーマンス確保のためだそうです。
- A.
- Q. throw; とthrow ex; の違いをスタックトレースの観点で説明せよ。
- A.
throw;だと下位の例外がそのまま伝播されるが、throw ex;だとexで指定された型の例外が上書かれて伝播される。- (調べました)throw;はスタックの開始位置をリセットしないが、throw ex;の場合はスタックの開始位置がリセットされる。
- A.
- Q. フィールドのアクセス修飾子をprivateにしプロパティのgetter/setterではそのフィールドを読み書きするだけというコードが馬鹿馬鹿しい理由を説明せよ。
- A. 自動プロパティがあるから。かな?
プロパティだけを実装するコードが馬鹿馬鹿しいという意味だったらわかりません。- (調べました)自動プロパティがあるから。で良さそうです。
- A. 自動プロパティがあるから。かな?
- Q. nullを参照している参照型変数のメソッドを呼び出そうとした場合でもNullReferenceExceptionが発生しないのは主にどういう状況か?
- Q. クラスと構造体の違いは何か?(「スタックとヒープ」以外で)
- A. クラスは参照型で構造体は値型。
- (調べる予定)
- A. クラスは参照型で構造体は値型。
- Q. デストラクタとは何か?
- A. GCがインスタンスをFinalizeする時に呼ばれるメソッド。
- Q. インターフェースの明示的実装を利用する目的を1つ説明せよ。
- A. 明示的なリソースの解放の為にIDisposableインターフェイスを実装する。とか。
- (調べる予定。なんか題意を勘違いしている気がする…)
- A. 明示的なリソースの解放の為にIDisposableインターフェイスを実装する。とか。
やっぱりまだまだですね…精進します(´・ω・`)