rksoftware

Visual Studio とか C# とかが好きです

C#

C# で定義が未知の Json を扱う (.NET Framework / .NET Core) まとめ

以前に書いた一連の記事をまとめた記事です。 C# で定義が未知の Json を扱う (.NET Framework / JObject) - rksoftware C# で定義が未知の Json を扱う (.NET Framework / ExpandoObject) - rksoftware C# で定義が未知の Json を扱う (.NET Core / System.…

C# で定義が未知の Json を扱う (.NET Core / System.Text.Json / System.Dynamic.ExpandoObject)

未知の Json を扱う一連の記事をまとめた記事を書きました。 こちらの記事で一気読みできます。 ■ 現行世代の Json API / System.Text.Json Json を扱う際には .NET Framework 時代には Json.NET というライブラリがよく使われていました。今の時代 (.NET Co…

C# で定義が未知の Json を扱う (.NET Core / System.Text.Json)

未知の Json を扱う一連の記事をまとめた記事を書きました。 こちらの記事で一気読みできます。 ■ 現行世代の Json API / System.Text.Json Json を扱う際には .NET Framework 時代には Json.NET というライブラリがよく使われていました。今の時代 (.NET Co…

C# で定義が未知の Json を扱う (.NET Framework / ExpandoObject)

C#

未知の Json を扱う一連の記事をまとめた記事を書きました。 こちらの記事で一気読みできます。 ■ 【過去】 .NET Framework 時代 Json を扱う際には .NET Framework 時代には Json.NET というライブラリがよく使われていました。 このライブラリの Newtonsof…

C# で定義が未知の Json を扱う (.NET Framework / JObject)

C#

未知の Json を扱う一連の記事をまとめた記事を書きました。 こちらの記事で一気読みできます。 ■ 【過去】 .NET Framework 時代 Json を扱う際には .NET Framework 時代には Json.NET というライブラリがよく使われていました。このライブラリの Newtonsoft…

Microsoft Learn で C# 入門の検証 (学べる事の確認)

C#

C# のイベントなんかをやったりやらなかったりしていると、C# 入門用のおすすめコンテンツについて聞かれることが結構あります。 そんな中、最近 MS の Microsoft Learn 推しがアツいので、これを紹介できないかと思って、一念発起観てみることにしました。 …

Microsoft Learn で C# 入門の検証 (モジュールの確認)

C#

C# のイベントなんかをやったりやらなかったりしていると、C# 入門用のおすすめコンテンツについて聞かれることが結構あります。 そんな中、最近 MS の Microsoft Learn 推しがアツいので、これを紹介できないかと思って、一念発起観てみることにしました。 …

.NET Framwrok で使えない C# 8.0 の機能

今日は偶然にも、新機能を一通り試した .NET Core 3.0 プロジェクトの コードが手元にあったので ( 参考記事 ) .NET Framework プロジェクトにしてビルドしてみました。 ※参考記事 ■ コンパイル結果 C# 8.0 の新機能 ○ / × 読み取り専用メンバー ○ 既定のイ…

C# 8 の確認 - verbatim 補間文字列の拡張

C#

今回は verbatim 補間文字列の拡張 です。 公式はこちら このブログでの目次?はこちら 7.3 以前 C# には @""、$"" があります。そしてこれらは組み合わせて使うことができます。 var text = "十万石饅頭"; // これまでは $@ だけ Console.WriteLine($@"C:\s…

C# 8 の確認 - 入れ子になった式の stackalloc

C#

今回は 入れ子になった式の stackalloc です。 公式はこちら このブログでの目次?はこちら stackalloc{ } を foreach 等に直接書くと Span や System.ReadOnlySpan になります。 Span や System.ReadOnlySpan が通ることろで stackalloc{ } が書けます。 fo…

C# 8 の確認 - 構築されたアンマネージド型

C#

今回は 構築されたアンマネージド型 です。 公式はこちら このブログでの目次?はこちら C# 7.3 以前 型引数のある型(ジェネリック)構造体はアンマネージ型にできませんでした。 これからは フィールド全てがアンマネージド型の場合、ジェネリック構造体が…

C# 8 の確認 - null 合体割り当て

C#

今回は null 合体割り当て です。 公式はこちら このブログでの目次?はこちら 実例 ??= 左辺の変数が null の場合、左辺に右辺の値が代入される。左辺が null でない場合、何も起きない。 string text = null; // text が "saitama" となり "saitama" が表…

C# 8 の確認 - インデックスと範囲

C#

今回は インデックスと範囲 です。この機能も .NET Core 3 のプレビューのバージョンアップのたびに言及されてきた機能なので関心が高いのではないかなと思います。 公式はこちら このブログでの目次?はこちら 二つの型 この機能のために二つの型(構造体)が…

C# 8 の確認 - 非同期ストリーム

C#

今回は 非同期ストリーム です。この機能は、あるといいのは確かですが、自分自身が使う機会がなさそうで自分でコードを書いて確認したい点が思い浮かばず、公式のコードをそのまま動かしてます。 公式はこちら このブログでの目次?はこちら 作り方 async S…

C# 8 の確認 - null 許容参照型

C#

今回は null 許容参照型 です。C#8 で一番有名な新機能で、強い関心のある方も多いのではないでしょうか? 公式はこちら このブログでの目次?はこちら 使い方 この新機能は、明示的に有効にしないと使えません。何も考えずに有効にすると、これまで書いてい…

C# 8 の確認 - 破棄可能な ref 構造体

C#

今回は 破棄可能な ref 構造体 です。 公式はこちら このブログでの目次?はこちら ref 構造体と IDisposable インターフェイス 通常の構造体は IDisposable インターフェイスを実装できます。 struct A : IDisposable { public void Dispose() => throw new…

C# 8 の確認 - 静的ローカル関数

C#

今回は 静的ローカル関数 。これは使わないと何がどうしようもないという仕様ではないですが、あってうれしい仕様です。必要に迫られないので、しっかり覚えて意識して使っていきましょう。 公式はこちら このブログでの目次?はこちら 静的でないローカル関…

C# 8 の確認 - using 宣言

C#

今回は using 宣言 。この仕様はちょっとわかりにくいかもしれません。しかし分かってしまえば間違いもないですし、書かれたコードを見る機会もどんどん増えていくことでしょう。しっかり覚えておきましょう。 公式はこちら このブログでの目次?はこちら こ…

C# 8 の確認 - 位置指定パターン

C#

今回は 位置指定パターン 。この仕様は、前提として分解というおそらく、そんなに使われていない仕様が前提となっているためそんなに使われないのかもしれません。ただ、タプルパターンがあるなら会ってしかるべき納得の仕様だと思います。 公式はこちら こ…

C# 8 の確認 - タプル パターン

C#

今回は タプル パターン 。言語仕様的にはすごく納得感ある機能で、できなくても困りはしないけど、できて欲しい書き方ですね。 公式はこちら このブログでの目次?はこちら タプルを条件にできる 値も条件もタプルにできます。 次のコードでは、大都会と表…

C# 8 の確認 - プロパティのパターン

C#

今回は プロパティのパターン 。この機能でようやくパターンマッチングという名前で想像される機能となったのではないでしょうか? 公式はこちら このブログでの目次?はこちら プロパティの値でマッチ プロパティの値でマッチできます。一部のプロパティだ…

C# 8 の確認 - switch 式

C#

今回は switch 式 。この機能は本当にうれしい機能です。即導入したい機能です。 公式はこちら このブログでの目次?はこちら 式の switch switch が式になります。式なので結果を返します。switch のそれぞれの条件の中身が結果を返すので条件に応じた値を…

C# 8 の確認 - パターンマッチングの機能強化

C#

今回は パターンマッチングの機能強化 。これは期待していた方もとても多いのではないでしょうか? C# 7 の頃からパターンマッチングが追加されつつも機能的には(多言語の同名機能と比べて)貧弱で少しがっかりした方もいると思います。遂に満足のいくレベル…

C# 8 の確認 - 既定のインターフェイス メソッド

C#

今回は 既定のインターフェイス メソッド 。結構話題だったので名前は聞いたことがあるという方もいるのではないでしょうか? 公式はこちら このブログでの目次?はこちら インターフェイスに実装がもてる ここでは Method2 に 2 を返すという実装がされてい…

C# 8 の確認 - 読み取り専用メンバー

C#

今回は 読み取り専用メンバー 。名前からでは機能が分からないですね。確認して行きましょう。 公式はこちら このブログでの目次?はこちら ■ メソッドに readonly を付けられる これまではこんな感じでした。 public override string ToString() => ""; こ…

C# 8.0 の新機能を確認する (目次?)

C#

.NET Core 3.0 はいくつもの注目機能がありますが、その中でも 4 番目くらいに (私が) 注目したいのが C# 8.0 です。 特に、Null 許容参照型と switch 式は多言語の同等機能を本当にうらやましく思っていたので、直ぐに使っていきたいと思っています。 とい…

定義済みの型 'system.object' は定義、またはインポートされていません

定義済みの型 'system.object' は定義、またはインポートされていません Visual Studio 2019 で .NET Standard と .NET Core のプロジェクトを作ると次の様なコンパイルエラーが出ることがありました。 定義済みの型 'system.object' は定義、またはインポー…

C# で令和元年を表示する

C#

先日、de:code 2019 に参加してきました。 その中で最後に聴講した「C# ドキドキ・ライブコーディング対決 @ de:code - ONLY C#!! Blazor Web 開発バトル -」というセッションがとても面白く、選択して大正解でした。 登壇者の皆様、素晴らしいセッションを…

Microsoft Learn でクライアントアプリや Web アプリを学べそうなもの

(2019/03/30 時点です) コンテンツは日々増えているようなので、これを読んでいるときには状況も変化しているかもしれません。 ■ Microsoft Learn オンラインでマイクロソフトのプロダクトを無料で学べます。 2019/03/30 時点で 360 の学習内容があります。…

.NET でのディレクトリの扱い方

.NET/C# でファイルパスを扱う次のようなコードを見たことは無いでしょうか? string directory = "directory1\\directory2\\"; string filename = "filename.ext"; string combined = ""; if (directory.EndsWith("\\")) { combined = directory.Substring(…