【漫画は】漫画ナツ100【世界を救う】

よなかのとり 【漫画は】漫画ナツ100【世界を救う】という企画があったので参加してみます。

今自分の手元に単行本(または文庫本)のある漫画という縛りでやってました。 締切りぎりぎりなんで、とりあえずはリストアップのみ。リストの順番に特に意味は無いです。

後でコメントを書くかも。



カルバニア物語, TONO
ダスクストーリィ, TONO
しましまえぶりでい, TONO
そこをなんとか, 麻生みこと
恋花路地, 麻生みこと
ことのは, 麻生みこと
トッペンカムデンへようこそ, 征矢友花
愛すべき娘たち, よしながふみ
フラワーオブライフ, よしながふみ
西洋骨董洋菓子店, よしながふみ
動物のお医者さん, 佐々木倫子
Heaven?, 佐々木倫子
ヘヴン, 遠藤淑子
マダムとミスター, 遠藤淑子
スマリの森, 遠藤淑子
失恋ショコラティエ, 水城せとな
ぴよぴよファミリア, 愛田クレア
うるわしの英国シリーズ, 波津彬子
雨柳堂夢咄, 波津彬子
町でうわさの天狗の子, 岩本ナオ
雨無村役場産業課兼観光係, 岩本ナオ
ケルトンインザクローゼット, 岩本ナオ
アツイヒビ, 緑川ゆき
夏目友人帳, 緑川ゆき
海街dialy, 吉田秋生
坂道のアポロン, 小玉ユキ
光の海, 小玉ユキ
STAYシリーズ, 西炯子
ひらひらひゅーん, 西炯子
Zoo Keeper, 青木幸子
へうげもの, 山田芳裕
度胸星, 山田芳裕
テルマエロマエ, ヤマザキマリ
イタリア家族風林火山, ヤマザキマリ
ヒストリエ, 岩明均
私日和, 羽柴真央
コーセルテルの竜術士, 石動あすま
NGライフ, 草凪みずほ
あめのちはれ, びっけ
吼えろペン, 島本和彦
新吼えろペン, 島本和彦
アオイホノオ, 島本和彦
おまかせ!ピース電器店, 能田達規
ライアー×ライアー, 金田一蓮十郎
ニコイチ, 金田一蓮十郎
お嫁に行けない, 藤原規代
こどものおもちゃ, 小花美穂
アフターゼロ, 岡崎二郎
MASTERキートン, 浦沢直樹
続きはまた明日,, 紺野キタ
ストレンジ・プラス, 美川べるの
神聖モテモテ王国, ながいけんいち
きせかえユカちゃん, 東村アキコ
ママはテンパリスト, 東村アキコ
公家侍秘録, 高瀬理恵
腐女子っす, 御徒町鳩
プレゼントは真珠, さいとうけん
電撃デイジー, 最富キョウスケ
ここではない★どこかシリーズ, 萩尾望都
風光る, 渡辺多恵子
依姫奇譚, 江平洋巳
十四才の恋, 水谷フーカ
桃色ヘヴン!, 吉野マリ
誰も寝てはならぬ, サライイネス
めいわく荘の人々, 五十嵐浩一
ファンタジウム, 杉本亜未
鍵, 望月花梨
笑えない理由, 望月花梨
墨戯王べいふつ, 佐々木泉
他人の家, 深巳琳子
沈夫人の料理人, 深巳琳子
コランタン号の航海, 山田睦月
22XX, 清水玲子
桃山キョーダイ, ふじつか雪
十二秘色のパレット, 草川為
まかないこむすめ, 小谷あたる
青春しょんぼりクラブ, アサダニッキ
コルセットに翼, もとなおこ
奇跡でGO!, 羽崎やすみ
あの子の腕は虹の続き, 鈴木有布子
ひらけ駒, 南Q太
プリーズ、ジーヴズ, 勝田文
高杉さん家のおべんとう, 柳原望
まるいち的風景, 柳原望
地球道草アンダンテ, 大竹サラ
悪霊退散大作戦, 魚住かおる
百鬼夜行抄, 今市子
魔法使いの娘, 那州雪絵
拝み屋横丁顛末記, 宮本福助
Landreaall, おがきちか
ヨルムンガンド, 高橋慶太郎
ボクラノキセキ, 久米田夏緒
笑うかのこ様, 辻田りり子
鉄道少女漫画, 中村明日美子
太陽の家, タアモ
片恋トライアングル, 天乃忍
月夜烏草紙, 及川七生
じゃじゃ馬グルーミン★UP, ゆうきまさみ
愛がいそがしい, さそうあきら
清村くんと杉小路くんと, 戸塚理弘

"「C#できます」と言い放ったあいつがJavaプログラマであることを見分ける10の質問" をやってみる

実質はてなダイアリー初投稿。
「C#できます」と言い放ったあいつがJavaプログラマであることを見分ける10の質問 - 平々毎々(アーカイブ)が気になったので、やってみる。
はてな記法よくわかんない。

==演算子オーバーロードを実装してEqualsメソッドと同じ処理を実行するようにしてもよい場合はどのような時か?

  • いきなりわからない。EqualsとGetHashCodeをオーバーライドしている場合はいつでもOKじゃないのか?
  • MSDNガイドラインがあったような気がしたので、古いブクマを検索したら出てきた。

既定では、演算子 == は、2 つの参照が同じオブジェクトを示すかどうかを確認して参照の等価をテストします。したがって、この機能を取得するために参照型で演算子 == を実装する必要はありません。型が変更できない場合、つまりインスタンスに含まれているデータを変更できない場合、その型は、変更不可能なオブジェクトとして、同じ値を持つ限り同一と見なされるので、参照の等価の代わりに値の等価を比較するように演算子 == をオーバーロードするのが有効です。変更不可能な型以外で演算子 == をオーバーライドすることはお勧めしません。

Equals() と演算子 == のオーバーロードに関するガイドライン (C# プログラミング ガイド) | Microsoft Docs

なるほど。

  • 結論: immutableな型の場合。

ループ内でなければ、たとえ100個の文字列型変数であってもまとめて+演算子で連結してよい理由を説明せよ

  • コンパイラが最適化してくれたような気がする。
    • 文字列リテラルを+演算子で結合した場合、コンパイラが最適化して、結合済みの形にするのは聞いたことがある。
    • 文字列変数ではどうだったか?
    • 確かめるべし。

↓をReleaseでビルドしてildasmでILを確認。

using System;

namespace StringConcatOptimization
{
    class Program
    {
        static void Main(string[] args)
        {
            string a = "a";
            string b = "b";
            string c = "c";
            string d = "d";
            string e = "e";

            string concatinated = a + b + c + d + e;

            Console.WriteLine(concatinated);
        }
    }
}

はてなダイアリーも、さすがにMSILのシンタックスハイライトには対応していないっぽい。

.method private hidebysig static void  Main(string[] args) cil managed
{
  .entrypoint
  // コード サイズ       82 (0x52)
  .maxstack  3
  .locals init ([0] string a,
           [1] string b,
           [2] string c,
           [3] string d,
           [4] string e,
           [5] string concatinated,
           [6] string[] CS$0$0000)
  IL_0000:  ldstr      "a"
  IL_0005:  stloc.0
  IL_0006:  ldstr      "b"
  IL_000b:  stloc.1
  IL_000c:  ldstr      "c"
  IL_0011:  stloc.2
  IL_0012:  ldstr      "d"
  IL_0017:  stloc.3
  IL_0018:  ldstr      "e"
  IL_001d:  stloc.s    e
  IL_001f:  ldc.i4.5
  IL_0020:  newarr     [mscorlib]System.String
  IL_0025:  stloc.s    CS$0$0000
  IL_0027:  ldloc.s    CS$0$0000
  IL_0029:  ldc.i4.0
  IL_002a:  ldloc.0
  IL_002b:  stelem.ref
  IL_002c:  ldloc.s    CS$0$0000
  IL_002e:  ldc.i4.1
  IL_002f:  ldloc.1
  IL_0030:  stelem.ref
  IL_0031:  ldloc.s    CS$0$0000
  IL_0033:  ldc.i4.2
  IL_0034:  ldloc.2
  IL_0035:  stelem.ref
  IL_0036:  ldloc.s    CS$0$0000
  IL_0038:  ldc.i4.3
  IL_0039:  ldloc.3
  IL_003a:  stelem.ref
  IL_003b:  ldloc.s    CS$0$0000
  IL_003d:  ldc.i4.4
  IL_003e:  ldloc.s    e
  IL_0040:  stelem.ref
  IL_0041:  ldloc.s    CS$0$0000
  IL_0043:  call       string [mscorlib]System.String::Concat(string[])
  IL_0048:  stloc.s    concatinated
  IL_004a:  ldloc.s    concatinated
  IL_004c:  call       void [mscorlib]System.Console::WriteLine(string)
  IL_0051:  ret
} // end of method Program::Main

string[]型のローカル変数が自動的に作られ、それを使用してString.Concatの呼び出しが1回にまとめられている。

  • 結論: +演算子を何回使用しても、String.Concatの呼び出し1回にまとめるように、コンパイラが最適化する。

Listのように値型を格納するジェネリックコレクションを使ってもボックス化/ボックス化解除が発生しない理由を説明せよ

  • 発生しないモノとして認識はしていたが、理由といわれても答えられない。
    • オブジェクトが(ポインタでなく)直に格納されているからと言う事でいいのか?
    • 仕様?

Full GC(Gen2 GC)が動作したときに断片化していてもコンパクションされないヒープ領域はどのような領域か?

throw; とthrow ex; の違いをスタックトレースの観点で説明せよ。

フィールドのアクセス修飾子をprivateにしプロパティのgetter/setterではそのフィールドを読み書きするだけというコードが馬鹿馬鹿しい理由を説明せよ。

  • そういう場合は、自動実装プロパティを使用すれば、簡潔に記述できる。

nullを参照している参照型変数のメソッドを呼び出そうとした場合でもNullReferenceExceptionが発生しないのは主にどういう状況か?

  • 拡張メソッドの場合?
    • 拡張メソッドを "参照変数のメソッド" と呼べるのかがよくわからない。

クラスと構造体の違いは何か?(「スタックとヒープ」以外で)

  • 変数へ代入する時にオブジェクトがコピーされる。
    • ヒープを使わずスタックを使うので軽量だが、コピーのコストに注意する必要がある。
    • ひとつの指標としては、16byteを超える場合はクラスにすべき。

デストラクタとは何か?

  • オブジェクトがGCに回収される時に呼び出されるメソッド。

インターフェースの明示的実装を利用する目的を1つ説明せよ。

  • 同じ名前と引数の型を持のメソッドを持つ、複数のインターフェイス(例: IEnumerableとIEnumerableは両方ともGetEnumerable()を持っている) を実装するため。

自信持って答えられたのは6/10。難しいです。