個人的まとめ記事
そのうちフルコンプする予定
- とにかく手当たり次第にC#を学びたい人向け
- 古い情報を漁りたい方向け
- 公開ストックとしても作成予定。
- 収録した記事には以下の内容を含む
→WPF
関連,RX
,Winform
関連,Linq
,Unity
→ その他難解なアルゴリズムやあまり知られていない用語を含む - 古い記事なので、現在のC#バージョン(.net 9.0以降)ではより効率よく書き直せる場合が多い。
- 記事内には若干の誤りを含む可能性がある。
- いいねが少ないものはかなり難解。
- 特に応用性に富む記事は私的に💡マークとして評価した。
- 記事の内容がオリジナルかどうかは検証していない
- この記事の内容は自由に再編集して構わない(例えば
WPF
として再分類して良い)
→ 収録した記事に関しては必ずしもその限りではないが、十分許容されるものと信じる次第である - Qiita内の記事のみを含める
- 個人的に調べた事を注釈として書いている※1
- アカウントは放置されて久しい物が多い模様
- 内容を深堀りしてほしい場合はいいねかストック。 内容はコメントへ※2。
$\color{gray}{\tiny \textsf{※1収録しているものは独断と偏見に基づいており、全ての記事を含めているわけではない。}}$
$\color{gray}{\tiny \textsf{※2 気が向いたら応じる}}$
そのうち誰かがAPIで作ったりするのかもしれない
ワタシは生成AIで意味を解説させてますが、ググっても出ないものがあるので一部の意味だけを含めています(詳しく知りたい場合は各自で研究すること)
2012年
C#でFizzBuzzをば
https://qiita.com/Kokudori/items/889d1531b9c635c64668
Ling の基礎的な使い方。Range
メソッドから
enumの項目数を取得する
GPUIDを生成する
1月、2月…をJan. Feb. ...に変換する
コンテナに格納したコントロールを取り出す順序
https://qiita.com/kazuhirox/items/788508b5dc9546ae9ef0
winform向け
.Net + SQL Serverでテストデータを準備する方法
リフレクションで静的クラスのプロパティを取得
💡コンスセルのリストで再帰版直積
https://qiita.com/matarillo/items/90b4ff8061a3608c4428
コンスセルとは?
「コンスセル」はリストの先頭の要素と残りのリストを持つ構造体
関数型プログラミングの基本的なリストの形で、再帰処理に便利
C#で実装することで、不変で扱いやすいリスト操作ができる
💡コンスセルや再帰を使わずに直積
C#って普通に#if true とか #define とか使えるんだね。
既存のDataGridViewの列を持ったDataGridViewRowを作成する
https://qiita.com/satrex/items/7171d71461e3cb147b75
Winform向け。
生&死=?
https://qiita.com/jumboly/items/d89e704a59ebd6404af8
→ 文字コードが偶然ある文字になることを利用したお遊び。
個数の異なる二つのリストをカンマ区切りで縦に結合する
https://qiita.com/kazuhirox/items/96d2793ae9666eff88d8
→ 要素数が同じか短い方だけ必要ならLinqのZip
メソッドが簡潔
💡C#でvar_dump
https://qiita.com/rev84/items/2722096a1adedcdf0bbf
PHPのvar_dumpをC#的に実装したもので、オブジェクトの中身を簡単に再帰的に確認したい場合に便利
コルーチンの中で、更にWWWなどを使うメソッドを呼び出したい場合。
https://qiita.com/shinobu_shiva/items/9e71f4185e7cc01790ef
Unity向け。
重い処理の実行中にプログレスバー{IsIndeterminate=True}付きウィンドウを表示する
LINQでParserモナド
https://qiita.com/matarillo/items/d83a6961243e7c2848ee
HaskellのParserモナド等
モナドは関数型言語で副作用の管理や計算の連結を抽象化する仕組み。
「値を包むコンテナ」のようなもので、コンテナの中の値に対して連続的に処理をつなげていく方法を提供する。
2次元配列を列で取り出して演算する
https://qiita.com/kazuhirox/items/62b46b4889c4d5896a6d
C# 9以降ではdouble型を省略してNew出来る。
LINQを使って、指定個数ランダムで取り出すには
💡P/Invoke で __in_opt の引数を wrap するクラス
https://qiita.com/AsladaGSX/items/9f911a91bcd3897fc650
C# から Win32 API を P/Invoke で呼び出す際、__in_opt 引数(NULL 指定可能なポインタ)をスマートに扱う方法を解説
__in_opt 引数を持つWin32 APIは多数ある。
Formのローカリゼーションを一括切り替え
https://qiita.com/krsak/items/79983222c55feed78f0d
Winform向け。WPFではXAMLによるBindingが主流
💡メモリを節約して1000000番目の素数を求める
https://qiita.com/matarillo/items/1f7af38b7c9f26de5079
エラトステネスの篩と呼ばれるアルゴリズムの使用例。
- 範囲が大きく、メモリ確保が困難な場合
CompositeTable
など動的管理が有利 - 範囲が小さい・固定の時 は配列が有利
-「配列を使ったエラトステネスの篩」は高速で単純、メモリ使用量は範囲に直結して増加。 - 関連 Qiita記事エラトステネスの篩を使って素数を求める
LINQで7クイーン(書類選考無し&高級うなぎGET)
https://qiita.com/matarillo/items/55f05087507e6b05ded5
構造体は色々と振舞いを持たせられる事を知った。
💡Log4Net を利用してログを記録する
https://qiita.com/rohinomiya/items/2b86c4e8d5afd5c2fb39
WPFでも問題なく使用可能とのこと。
→インストール方法:【C#, log4net】log4netを使う
Log4NetのNullオブジェクトを定義してNullチェックを不要にする
💡try ~ catch で捕捉されてない例外をUnhandledExceptionで補足する
https://qiita.com/rohinomiya/items/c7f69713654c47f6c7cd
ちなみにVisual Studioの設定で、指定した例外を捕捉することも可能である
「filterM で powerset」をC#らしく
powerset(べき集合)というのは、すべての部分集合を集めた集合。
NDesk.Options を使ってコマンドライン解析を楽にする
C# から、Growlを利用する
https://qiita.com/rohinomiya/items/7b1ad2bae9aeb26fce5
古いので非推奨
Rxを使って、LocationChangedイベントを捕まえる --泣きながらC#
Rx(Reactive Extensions)とは、イベントや非同期データをLINQのようにストリーム(データの流れ)として扱えるライブラリ。
WPFに外部アプリ(Window)を埋め込む
数値文字列を指定桁で0埋めするにはString.PadLeft(桁,'0');
指定回数処理を繰り返すメソッド(拡張メソッド)
ForEach()メソッドをシンプルに書けるようにする
array(配列)に対する拡張メソッド
C#で可変長引数を使うには params
Quine(クワイン、自己言及プログラム)
https://qiita.com/matarillo/items/c5c804329c92c11c2529
ひろゆきが言及していたらしい
C# + LINQ でJSONのパースをする
https://qiita.com/numa08/items/475ab3e8aa9e10441a26
Jsonの深い構造の抽出を上手く書いている。
enumの文字列表現を定義する
https://qiita.com/kazuhirox/items/d4f2ea04f81bf3da613c
UI表示や多言語化に応用が利く
num < .Count()ではなく.Skip(num).Any()の勧め
POCOでDBの型を指定する
POCO(ポコ)とは "Plain Old CLR Object" の略で、
「ごく普通のC#のクラス」を意味する。
意味が分かる人がいるのか???
💡イテレーター非同期
https://qiita.com/matarillo/items/b51d39afebb115a19f0f
難解だが有用な記事
→AIによる解説
・明示的な継続渡しモデルによる非同期制御
・通常のasync/await方式より柔軟性が高い(らしい)
→実際の使用例は要望があれば記事化するかもしれない
既存DLL配布モジュールで発生する PInvokeStackImbalance の回避
.NETでアンマネージコードを呼び出す(P/Invoke)際、関数の呼び出し規約が一致していない場合などに起こるエラー
C#の記事とは言えない。
EnumerableEx.Generateを使う際の注意点
https://qiita.com/Tokeiya/items/5f7295e73d3cde646352
後置インクリメント(i++)を初めて知った件。
Windows のワイルドカード文字列を正規表現に変換するメソッド
https://qiita.com/AsladaGSX/items/5d109cdfb9519e142ad3
→ Windowsのファイル名パターンを正規表現で使いたい時
以下未整理
評価次第ではListに含めない
赤黒木+graphivizによる可視化
https://qiita.com/oskimura/items/117a833226d0ec924944
https://qiita.com/nicklegr/items/d3e97d6910a1353ff45b
Winform向け
https://qiita.com/rohinomiya/items/6bca22211d1bddf581c4
もう知ってるから個人的にはどうでもいい
基本的にコンストラクタでやってる
https://qiita.com/krsak/items/75a257cc0866a7e8e4aa
ツールとしては古い
https://qiita.com/nicklegr/items/faefb804697a395b148d
この方法はWindows内のusers.App
フォルダ内に保存されてしまうので、何となくお勧めしない(アクセス性が良くないから)。まあせいぜい数十kb程度だと思われるが。個人的にはini
やJson
の方が好き。
2012年度の(たぶん)有用な記事は以上になります。
あとがき
・・・・・・・・・疲れた。
2012年だけでこれだけの学びがある💧
AI生成に頼るだけの 底辺Coder AI駆動開発には限界があります。学ぼう。
$\color{gray}{\tiny \textsf{学習データ増えただけなのを性能が強化されたとか言ってるのウケる。}}$
宣伝
WPFでVisualStudioライクなSpellCheckerを自作した話
nugetで2000ダウンロード行きました。