ネコのために鐘は鳴る

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

2019-01-01から1年間の記事一覧

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

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

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

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

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

この記事は前回の記事の続き、および補足です。 前回記事 (C#) 同期コンテキストと Task, async/await - ネコのために鐘は鳴る UI スレッドへの復帰コスト 前回の記事で上げた GUI ループでのキューの監視は、ループごとにキューにコールバックがPostされて…

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

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

大学院受験の感想

ただの日記です。 この日記執筆時点では大学院受かりました、とはまだ断言できないのですがまあ受かりました 積極的に人に言わないだけで別に隠していることでもないですが、去年も同じところの大学院を受けました。なんとまぁ去年も大学院に受かりました。2…

解けない15パズル

15パズルってご存知ですか? 知ってても知らなくても15パズルの話をするんですが。はい。 あと、本記事は数学的な厳密な証明はせずに感覚的にエイッヤッ~とやっているので正確じゃないです。 でもたぶんあってる。はい。 これ 簡単に言いますと、1マス空い…

(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>…