ひでぼ~blog

C#ときどきゲーム

C#

C#のrecordとclassとstructを比較した

C#

C#9から登場したrecordで型が定義できるようになって、record、class、structなどよく分からなくなってきたので、いろいろ比較しつつ整理してみました。 class struct record 参照型 or 値型 参照型 値型 参照型 継承 できる できない できる Equals() 参照…

C#9.0のInit Only Setterを試す

C#

.NET 5がリリースされてC# 9.0モチベが高まったのでやってみました。 Init Only Setterを使うとImmutableな型を定義するのがラクになります。 C# 9.0以前の書き方 プロパティをget onlyにしてコンストラクタで各プロパティを初期化しないとダメでした。 clas…

Visual Studioのクイックアクションで生成されるフィールドの命名規則を変更する

コンストラクタで受け取った引数をフィールドに代入する時、Visual Studioのクイックアクション(電球ボタン)を使うとフィールドを定義して初期化するコードを自動で生成してくれます。 コンストラクタの引数にカーソルを当ててクイックアクションを押すと…

ASP.NET CoreでSwaggerUIを使ってみる

ASP.NET CoreでWebAPIのデバッグをしていてSwaggerUIがすごい便利だったので適当なプロジェクトを作ってSwaggerUIを表示するところまでをやってみます。 nugetパッケージの準備 ASP.NET Core 3.1で適当なWebAPIのプロジェクトを作成します。nugetパッケージ…

ConsoleAppFrameworkを試した

C#

仕事でちょっとしたコンソールアプリを作るときにDIやConfigurationの仕組みが欲しかったので試しに使ってみました。 github.com まずコンソールアプリケーションのプロジェクトを作成して、nugetパッケージの管理からConsoleAppFrameworkをインストールしま…

null許容参照型を試した

C#

なんとなくC#8のnull許容参照型を試したくなったのでコードを書いてみました。 手っ取り早く試したいのでcsprojを編集してプロジェクト丸ごとnull許容参照型を有効にしました。 <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>netcoreapp3.1</TargetFramework> <Nullable>enable</Nullable> </PropertyGroup> </Project> いつもどおり適当なクラスを作ってみたのですが…

ASP.NET Core APIでXML形式のRequestを受け取る

ASP.NET CoreでWebAPIを作り、XML形式のRequestを受け取れるかを試してみました。 .NET Core 3.1、ASP.NET CoreでWebAPIのプロジェクトを作成します。 まずControllerとActionを用意します。 [Route("api/[controller]/[action]")] [ApiController] public c…

explicit演算子を試した

C#

C#でexplicitというキーワードを使うと()を使った明示的なキャストを定義できることを知ったので試してみました。 class Program { static void Main(string[] args) { var book = new Book { Id = 1, Name = "はじめてのC#", Price = 1200 }; var bookViewM…