ネコのために鐘は鳴る

寺院に住み着くパソコ〇好き

programming

(C#) 配列の for の JIT 最適化処理

[前提] C# のコンパイルと JIT コンパイル C# --> [コンパイル] --> IL -> [JIT] --> バイナリ の流れを知ってる人は読み飛ばしてください forの最適化の話をする前に、C#のソースコードが実行可能バイナリ (アセンブリ) にコンパイルされるまでの流れをおさ…

(C#) string で発生するガベージを抑える (String Interning)

C# においてstringは参照型で、そのインスタンスはヒープメモリに生成されます。 当然、参照されなくなったstringは次回のガベージコレクションで回収されます。 少しでもガベージは減らしたいものですが、文字列は生成するたびに同じ内容でも別インスタンス…

(C#) 知らぬ間に起こるstructのboxingを回避する

この記事の要点 自分でobjectにキャストしなくてもboxingは起こるよ structは等価比較を実装しないとパフォーマンスが落ちますよー ボックス化 (boxing) とは C# には値型と参照型があり、structは値型です。値型のオブジェクトは参照型のメンバ変数である場…

(C#) 同期コンテキストと Task, async/await

.NET framework 4 で追加されたTaskおよび .NET framework 4.5 で追加されたasync, awaitキーワードによって、C# の非同期処理は非常にに簡単になりました。 Windows Form, WPF, UWP, Unity など各種フレームワーク上の場合、非同期処理はスレッドやコールバ…

(C#) コレクションのカプセル化

コレクションの保護 クラスの不十分なカプセル化としてよく見られるのがコレクションです。 以下の例は、カプセル化されていないコレクションの例です。 public static class Database { public static Person[] People { get; private set; } } public clas…

カプセル化とは何か

カプセル化とはオブジェクト指向の根幹をなす考え方です。カプセル化について考えて見ましょう。(本記事はC#をベースに考えていますが、カプセル化自体はオブジェクト指向言語全般に関して共通することでしょう) カプセル化とAPI 自販機を例に考えてみましょ…

.NET CoreでNugetパッケージのdllをビルド出力する

.NET CoreでNugetのパッケージのdllはデフォルトではビルド出力にコピーされないし、 Visual Studio上から設定で出力するように設定変更もできない(たぶん)(何故) [2020/6/29 追記] この記事の内容は.net core 2.x 時代の話で、.net core 3.0 からはdllがデ…

.NETとマルチプラットフォーム

C#でマルチプラットフォームなアプリケーションを作りたかった時に、調べたことを自分用メモとしてまとめました。 たまには違う言語も書いたら? C#の実行環境 C#はIL(中間言語;Intermediate Language)にコンパイルされ、仮想環境上で動くコンパイル系言語で…

(備忘録)C++でOpenGL使う時に調べた用語まとめ

C++素人がC++でOpenGLで遊びたいなと思った時に出てきた用語をまとめた。 知っていた単語、聞いたことはあるが理解していなかった単語、知らなかった単語もあるが、 備忘録として関連してそうなワードを独断と偏見でまとめてみた。 間違いや勘違いがあれば教…

(C#)Enumの要素に表示名をつける ~ローカライズ編~

前回の記事の続きです 前回はEnumDisplayName属性に定数リテラル文字列を与えることはできましたが、 リソースから値を割りつけることができませんでした。これでは多言語化する時に困ります。 [AttributeUsage(AttributeTargets.Field)] public class EnumD…

C#5でもnameofしたい

結論 前置きが長いと結論を早く知りたいマンにボコられるので、 まずはタイトルに対する結論から。 using System; using System.Linq.Expressions; public static class GetName { public static string Of<MemberType>(Expression<Func<MemberType>> expression) { return (expression.Bo</func<membertype></membertype>…

(C#) Enumの要素に表示名をつける

やりたいこと Enumのフィールド名と表示名を分離したい。 最終的な目標として、Sushi.Takoというenumを表示する文字として"タコ"を割り当てたい。かつ汎用性のある構造にしたい。多言語によるローカライズにも対応したい。今回はそういうお話です。 2019/2/2…

DependencyPropertyとBindingについて

DependencyPropertyとは何か WPFにおけるBindingの根幹をなす依存関係プロパティ(DependencyProperty)について書いておこうと思います。 まず、DependencyPropertyとは何かというと、一言で言うとBindingができるプロパティのことです。 より正確に言うと、B…

MVVMで始めるWPF生活

はじめに 皆さんはラーメンは何で食べますか?いえ、そうではなく、WPFとはいったい何でしょうか?正式にはWindows Presentation Foundationといい、Windows Formに代わる新しいWindowsにおけるGUIアプリケーションのプラットフォームであり、登場は2006年。…

ターミナルで擬似動画再生

お久しぶりです.更新頻度が半端なく低く,もはや誰のためのブログなのかわからないですね.でも更新します.楽しいので さて本日のテーマはターミナルで動画を再生したい的な何かです.ハッキリ言ってn番煎じです.世の中にはそういうものがすでに存在しま…