C#

C#のTop-Level Statementでハマった話

.NET5.0のコンソールアプリケーションを.NET6.0にアップグレードしてTop-Level Statementを利用しようとしたときに起きた問題です。 最上位レベルのステートメントが含まれているファイルには、そのファイルの最後の最上位レベルのステートメントの後に、名…

C# 9.0 の record 型 と DDD の値オブジェクトについて

.NET 5 のリリースにより、 C# 9.0 が使えるようになりました。 C# 9.0 の新機能の中で注目を浴びている機能として record 型があります。 この record 型がドメイン駆動設計の値オブジェクトの設計に有用だという知見を得たので、この知見について記したい…

dotnet core tool でパスワード付き ZIP 圧縮ツール作ってみた

最近巷では dotnet core tool というものが流行っている?のを知りました。 docs.microsoft.com 一言でいうと、 npm global tool です。 Console App で作ったツールを NuGet に公開したりして使えます。 私は以前こんな記事を書きました。 neko3cs.hatenabl…

PowerShell Binary Module を作ってみた

最近 PowerShell での自動化がマイブームです。 ちょっとしたツールとかも PowerShell スクリプトで作ったりしますが、あんまり複雑なものだと C# バッチアプリで書いた方が楽じゃないかと思う時があります。 そんな中いろいろ調べてみたら C# で PowerShell…

C#のTaskと非同期処理についてまとめる

最近非同期処理関係で詰まるところがあったので、頭の整理も兼ねてまとめたいと思います。 Taskとは C#のTaskとはTaskです。 これ自体は非同期処理でもなんでもない、ただの処理の手順書に過ぎません。 // 返ってきてるのはHTTP GETするという手順のみ Task<HttpResponseMessage> </httpresponsemessage>…

LINQのススメ

LINQが登場して10年、LINQはかなり熟成、安定した技術になっています。 ですが、新規C#erやC#2.0で知識が止まっている人などおり、布教活動に休みはありません。 そんな迷える子羊達にLINQの教えを唱えます。 LINQとは LINQは統合言語クエリ(Language INteg…

C# 7.0 構文まとめ

C#

C#ってどんどん進化していくので意外と知らない構文があったりします。 特に最新のC# 7.0は業務で使用出来ない都合上知らない構文ばかりです。 なので、今の段階で最新構文のうち実用性の高そうなものをまとめておこうと思います。 outパラメータ付き引数で…