rksoftware

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

C#

C# 10 の新機能 - リンク

C#

C# 10 の新機能 - リンク 日本語機能名 英語 リンク レコード構造体 Record structs リンク パラメーターなしの構造体コンストラクター Parameterless struct constructors リンク グローバルな using ディレクティブ Global using directive リンク ファイ…

ピクセル編集は遅い

C#

先日、画像のピクセルを編集する記事を書きました。 rksoftware.hatenablog.com その中で、遅いと書きました。 実際どのくらい遅いのか、5472 x 3648 の画像で全ピクセルを扱うような処理をしてみると雑に 9 秒くらいかかりました。 本当はもっといろいろな…

画像をピクセルで編集する

C#

ある時画像のピクセルを編集したくなることがあるはずです。 皆さんもそういう日があると思います。 ピクセルを扱うのは簡単です。 // 画像を読み込み using System.Drawing.Bitmap bitmap = new new ("test.jpg"); // 1, 2 の位置のピクセルの色を取得 Syst…

global using

これまで暗黙的な global using 関連の記事を何個か書いてきましたが、実は global using は書いていませんでした。 ■ global using どこかの1ファイルで using だけですべてのファイルで using したことになる機能です。 ■ 前提条件 今回のコードを試すに…

暗黙的な global using ディレクティブをもっと細かく制御する

先日暗黙的な global using ディレクティブについて書きました。 実は暗黙的な global using ディレクティブは .csproj ファイルでもっと細かく制御できます。 ■ Import Remove / Import Include 上に貼ったリンクの通りですが、例えば次のような要素を .csp…

暗黙的な global using ディレクティブによる破壊的変更の回避

先日暗黙的な global using ディレクティブによる破壊的変更について書きました。 記事の中で実際に .NET 5 で通っていたコードが .NET 6 でエラーになるパターンを挙げて確認しました。 ■ DisableImplicitNamespaceImports プロパティ このエラーは、 .cspr…

暗黙的な global using ディレクティブによる破壊的変更

暗黙的な global using ディレクティブについては次を参照してください、 ■ System 名前空間に注目して検証 次のコードは .NET 5 ではまったく問題なくビルドできるコードです。 3 行目の Console は Test 名前空間のクラスとして認識されています。 using T…

テンプレートの C# コードが以前のバージョンでサポートされない

これはあまり問題にならないと思いますが、言われてみれば、入門者とかは結構はまりそうだなと注目した記事です。 簡単に言うと、.NET 6 で作ったプロジェクトはテンプレートの段階で .NET 6 の機能を使っているので、TargetFramework を落とすとエラーにな…

暗黙的な名前空間機能

先日、.NET 6 のコードでは、これまで書く必要があった using ディレクティブが不要になっていると書きました。 これはこういうことだったらしいです。 簡単に抜粋すると 次の using は書かなくていい、ということになります。 System System.Collections.Ge…

とある機能が本当に新機能か確認する

初めて見る機能が、最新環境での新機能か確認したいこと、とてもよくありますよね? そんな時私がやってしまうのがこれ この記事のような方法で TargetFramework を一つ前のバージョンに設定してみます。 実践 .NET 6 ではエラーが出ていないコードが .NET 5…

using 不要

詳細はこれから調べたいと思います。 これまでの C# 次のコードはエラーになります。実際にエラーになっていることがわかるよう画像で貼っておきます。 ※一部抜粋ではなく全コードです。 using System; using System.Linq; がないのでエラーになっています。…

ファイルを同時に読んで書いてしてみる

概要 冒頭のリンクの中の Reading & Writing Files という項目が気になったので動かしてみました。 新しいファイル読み書きの API ですね。一つのファイルを並行で 3 処理で読み書きしでみました。 以前に読んでみただけの記事はこちら 読むために必要なもの…

ファイルを同時に読んでみる

概要 冒頭のリンクの中の Reading & Writing Files という項目が気になったので動かしてみました。 新しいファイル読み書きの API ですね。 試しに一つのファイルを並行で 2 処理で読んでみています。 コード コード using SafeFileHandle handle = File.Ope…

DataTable で XML を使う

.NET の System.Data.DataTable。みんな大好きですよね? 実はあまり知られていない事実ですが、DataTable は XML を扱えます。 using System.Data; // 中身を XML ファイルに出力 { var dt = new DataTable(); dt.TableName = "saitama"; dt.Columns.Add("n…

.NET で SQLite を使う まとめ

.NET で SQLite を使ってみます。 過去に書いたい着くかの記事のまとめです。 今回の流れ NuGet からパッケージインストール データベースファイルを作って テーブルを作って テーブルの定義を読んで データを Insert して データを Select します NuGet か…

.NET で SQLite を使う ( テータの挿入 )

.NET で SQLite を使ってみます。 とりあえずデータの Select コードはこちら Select を行って実際に結果の値を見てみるには、意外なことに実は事前に一度は Insert をしなければならない テーブルにデータを Insert する insert into saitama values (1, '…

.NET で SQLite を使う ( テーブル定義の取得 )

.NET で SQLite を使ってみます。 とりあえずデータの Select コードはこちら クライアントマシンで動作するアプリでは、アプリのバージョンアップに伴うデータベースの変更という面倒ごとが存在ます。 いろいろな方法が考えられますが、実際の定義を見て判…

.NET で SQLite を使う ( テーブルの作成 )

.NET で SQLite を使ってみます。 とりあえずデータの Select コードはこちら テーブルを作成する Select するコードは以前に書きましたが、テーブルがなければ Select はできません。 テーブルを作成するコードはこんな感じですね。 // テーブルを作成する …

.NET で SQLite を使う ( データベースファイルの作成 )

.NET で SQLite を使ってみます。 とりあえずデータの Select コードはこちら データベースファイルを作成する。 今回はいわゆるコンソールアプリで作っています。ローカルマシン上で動くアプリです。となればデータベースファイルをどこに作るのか? といっ…

.NET で SQLite を使う

.NET で SQLite を使ってみます。 意外とやったことがなかったので。基本的にデスクトップであればもと別のものを使いますし、Xamarin であればまた別のライブラリが使われてきましたので。 今回使うライブラリ ( NuGet ) からインストールしてください。 Mi…

【C#】 _ (アンダーバー) は 2 個から使えます

C#

C# にはラムダ ディスカード パラメーターというすばらしい機能があります。 しかしこの機能、注意点があります。例えば次のコードはエラーになります。 System.Action<int, int> action = (_, _) => { var i = _; }; エラーの場所は = _; の _ でエラー内容は次です。</int,>…

まだまだ現役! .NET 6.0 でも Windows フォームアプリケーションの新機能

.NET 6.0 でもみんな大好き Windows フォームアプリケーションは現役です。新機能も追加されます。 参考: 今回はこの追加されたアプリケーション全体のデフォルトフォントを試してみます。 環境準備 Visual Studio 2022 Preview をインストールします。 htt…

C# 共変の戻り値の型の確認

C#

C# の共変の戻り値の型という機能は、インタフェースを実装するタイミングでは使えないと聞き確認してみました。 確認コードです。 ついでで非 virtual メソッド、abstract メソッドも試しています。 // Return の型 class ReturnTypeBase { } class ReturnT…

C# 2.0 以降の新機能の確認 - C# 9.0 - 部分メソッドの新機能

C#

C# 2.0 以降の新機能を一つづつ確認していきます。 以前に一度行ったのですが、公式ドキュメント再編でリンク切れしているところを見つけてしまったので。今ならもっと簡潔なサンプルが欠けるところもあるだろうし、せっかくなので今もう一度確認して行きま…

C# 2.0 以降の新機能の確認 - C# 9.0 - モジュールの初期化子

C#

C# 2.0 以降の新機能を一つづつ確認していきます。 以前に一度行ったのですが、公式ドキュメント再編でリンク切れしているところを見つけてしまったので。今ならもっと簡潔なサンプルが欠けるところもあるだろうし、せっかくなので今もう一度確認して行きま…

C# 2.0 以降の新機能の確認 - C# 9.0 - ローカル関数の属性

C#

C# 2.0 以降の新機能を一つづつ確認していきます。 以前に一度行ったのですが、公式ドキュメント再編でリンク切れしているところを見つけてしまったので。今ならもっと簡潔なサンプルが欠けるところもあるだろうし、せっかくなので今もう一度確認して行きま…

C# 2.0 以降の新機能の確認 - C# 9.0 - ラムダ ディスカード パラメーター

C#

C# 2.0 以降の新機能を一つづつ確認していきます。 以前に一度行ったのですが、公式ドキュメント再編でリンク切れしているところを見つけてしまったので。今ならもっと簡潔なサンプルが欠けるところもあるだろうし、せっかくなので今もう一度確認して行きま…

C# 2.0 以降の新機能の確認 - C# 9.0 - foreach ループの拡張機能 GetEnumerator サポート

C#

C# 2.0 以降の新機能を一つづつ確認していきます。 以前に一度行ったのですが、公式ドキュメント再編でリンク切れしているところを見つけてしまったので。今ならもっと簡潔なサンプルが欠けるところもあるだろうし、せっかくなので今もう一度確認して行きま…

C# 2.0 以降の新機能の確認 - C# 9.0 - 共変の戻り値の型

C#

C# 2.0 以降の新機能を一つづつ確認していきます。 以前に一度行ったのですが、公式ドキュメント再編でリンク切れしているところを見つけてしまったので。今ならもっと簡潔なサンプルが欠けるところもあるだろうし、せっかくなので今もう一度確認して行きま…

C# 2.0 以降の新機能の確認 - C# 9.0 - ターゲットにより型指定された条件式

C#

C# 2.0 以降の新機能を一つづつ確認していきます。 以前に一度行ったのですが、公式ドキュメント再編でリンク切れしているところを見つけてしまったので。今ならもっと簡潔なサンプルが欠けるところもあるだろうし、せっかくなので今もう一度確認して行きま…