自動実装プロパティのことを getter, setter を書かない、つまりフィールドと理解しているっぽく、許さねえ気持ちが高まりまくってる
自動実装プロパティのことを getter, setter を書かない、つまりフィールドと理解しているっぽく、許さねえ気持ちが高まりまくってる
C++ 文化圏からやってきたオブジェクト指向のせいで、なんかうまいこと静的型でやっちゃってるように見えるけど、結局は「それダックタイピングでやったほうが都合いいですか?」がオブジェクト指向しますか?の判断基準なんじゃないかな
自動実装プロパティの話については、フィールドのように定義して、フィールドのようにふるまうけど、あとから getter, setter に処理を加えるときに、シグネチャを変えず済むという点で、思いっきり Java Java しい getter, setter です
補足説明ですが「static メソッドはクラスへのメッセージ」という発言については、 static, static うるせえほかのオブジェクトと同じやろ!!と言って雑に static おじさんに対してまとめられるかな?という意図であり、前後の文脈ありません
アロケーションをやめろをしていると、例えば byte[] bs = { 0, 1, 2, ... } みたいにすると、リソースからコピーしてくる動作をするけれど、リソース内に持ってる配列初期化データを直接 ReadOnlySpan で扱えたら、 mmap 的にアクセスできるのにといつも思っているが、特にやる気はない
1 から 16 までの int 配列を作ったのをコンパイルしたら、最初の .text セクションの最後に配列の中身入ってた
@kb10uy そう。配列のサイズと同じ大きさの構造体と、その型の readonly フィールドが用意されて、フィールドの読み取り = PE 内のデータへのアクセスになってる
immutable 配列がないから C# で配列を初期化した時点でどうあがいても InitializeArray によってヒープへのコピーが走る。終わり
stackalloc も最近初期化子が使えるようになったらしいですが、あれは何もおいしい方法持っていないので、全部代入としてコンパイルされるよ!!
最近泣く泣く書いたのは、コピーした結果を読んでイチ早く解放したかったので
```
fixed (byte* bs = new byte[] { ... })
```
とか最悪なことやった(P/Invoke でポインタが欲しかったので)
ググってみたら、最初に実行されるコードは mscoree の関数へのジャンプと出てきた。真偽は確かめてない http://www.atmarkit.co.jp/fdotnet/dotnetwork/dotnetwork02/dotnetwork02_02.html
AnyCPU の Prefer64bit だったかのオプションは、 Windows が特別扱いしているから 64bit プロセスで起動できるとかいうカラクリだったりするのかな?
> Requires64bits
> This may be true even if the module contains only IL instructions because of PlatformInvoke and COM interop.
C++/CLI 用かもしれん
This program cannot be run in DOS mode.