rksoftware

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

C#

.NET 5 を RC1 版で動かしてみる

みなさんお待ちかねの .NET 5 のリリースが迫っています。もう少しだけ待ちの日々ですが .NET 5 の RC1 版が公開されて動かすことができます。 そこで、実際に環境を整えて動かしてみましょう。 ■ 用意するもの Visual Studio 2019 の Preview 版をインスト…

Uno Platform で世界に挨拶する簡単なハンズオンサンプルを作りました

Uno Platform で世界に挨拶する簡単なハンズオンサンプルを作りました。 正確には以前に一回作ったのですが、最近の事情でお蔵入りしていたので平日の夜にゆっくりやっても終わるように分量を短くしたものを作りなおしました。 ※ 本当はまだ、実際にゆっくり…

C# Tokyo オンライン LT 大会 2020/07 で話をさせていただきました

先日 C# Tokyo コミュニティで C# Tokyo オンライン LT 大会 2020/07 を開催しました。 枠がいっぱいになってキャンセル待ちにまでなる大盛況でした。 私は C# 7・8 の復習 というタイトルで話をしました。 C# 7・8 の復習 from m ishizaki ■ 次回予定 C# To…

C# 7・8 の復習その4 ~ C#8の新機能を調べた時のスライド

C#

皆さん C# 書いてますか? 私はあまり書けていません。 特に、C# 7 以降は地味に書けない環境だったり、C# 8 などは (一部対応している仕様もありますが) .NET Framework で書けなかったり、何気に使えないことも多いのでなおさらです。 ■ 復習しよう という…

C# 7・8 の復習その3 ~ C#7.2の新機能を調べた時のスライド

C#

皆さん C# 書いてますか? 私はあまり書けていません。 特に、C# 7 以降は地味に書けない環境だったり、C# 8 などは (一部対応している仕様もありますが) .NET Framework で書けなかったり、何気に使えないことも多いのでなおさらです。 ■ 復習しよう という…

C# 7・8 の復習その1

C#

皆さん C# 書いてますか? 私はあまり書けていません。 特に、C# 7 以降は地味に書けない環境だったり、C# 8 などは (一部対応している仕様もありますが) .NET Framework で書けなかったり、何気に使えないことも多いのでなおさらです。 ■ 復習しよう という…

アドオン機能を持ったアプリを作る

C#

C# でアプリに対してアドオン機能として、ユーザーが機能を追加できるようにしたいことが良くあります。 注意 今回の例は大いなる力をアドオン機能作成者の与えます。不用意なアドオン機能がアプリを簡単に壊すことができます。 大いなる力には大いなる責任…

C# でクラスがとあるインタフェースを実装しているかを調べる

C# でクラスがとあるインタフェースを実装しているかが知りたくなることが、稀に良くあります。 ■ Type.GetInterfaces メソッドの結果に Contains メソッド クラスが実装しているインタフェースのリストは Type.GetInterfaces メソッドで簡単に取得できます…

C# でクラスが実装しているインタフェースを取得する

C# でクラスがどのインタフェースを実装しているかが知りたくなることが、稀に良くあります。 ■ Type.GetInterfaces メソッド Type.GetInterfaces メソッドで簡単に取得できます。 ■ 実例 namespace ConsoleApp1 に次のインタフェースとクラスがあるものとし…

C# で参照で追加したプロジェクトのクラスが見つからない

少し詳しく表現すると、参照で追加したプロジェクトのクラスの定義されている Assembly (追加したプロジェクト) がロードされていない、です。 例えば次のように ClassLibrary1 プロジェクトを参照しているものとします。 <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>netcoreapp3.1</TargetFramework> </PropertyGroup> <ItemGroup> </itemgroup></project>

C# で現在読み込まれている Class を取得する

C# で現在読み込まれている Class を取得したいことが良くあります。 ■ 前提知識 以前に書いた次の「C# で現在読み込まれている Assembly を取得する」記事が前提です。 ■ コード 解説するよりコードが速いでしょう。 Console アプリを作成して Class の Typ…

C# で現在読み込まれている Assembly を取得する

C# で現在読み込まれている Assembly を取得したいことが良くあります。 ■ コード 解説するよりコードが速いでしょう。 Console アプリを作成して Assembly を表示するコードです。 AppDomain.CurrentDomain.GetAssemblies() 取得コード(例) foreach (var as…

C# で Class の定義されている Assembly を取得する

C#

C# でクラスの定義されている Assemby が何かを取得したいことが良くあります。 ■ コード 解説するよりコードが速いでしょう。 ClassLibrary1 というアセンブリに ClassLibrary1.Class1 というクラスがあるものとします。 var type = typeof(ClassLibrary1.C…

C# 文字列を連続で結合するときの + と StringBuilder の速さ

以前に文字列を + で結合する場合と StringBuilder で Append する場合どちらが速いかという話をどこかで見た記憶があります。その記憶では 10 回くらい結合するなら StringBuilder、それ未満なら + が速いとされていた気がします。 今、試したらどうなるか…

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…