C#
await と Task.Result によるデッドロックによるとWindows FormでTaskを使ったときにデッドロックするケースがあるようです。 検証してみます。 デッドロックするソースコード 試しに次のようなコードを書いてみました。 namespace AwaitDeadLockEight { pub…
NUnitのテストの命名規則をどうするとわかりやすくなるのか悩ましいのでまとめてみます。 describe と context がない NUnitにはRSpecとちがいdescribeとcontextに相当する機能がありません。 NUnitの公式のサンプルコードを見てみましょう。 https://github…
例えば、PHPでJSONファイルを読み込みたいとき PHPでJSONファイルを読み込むときの回答 例えば、PHPUnitでテストヘルパーを作りたいとき PHPUnitのヘルパー関数の定義方法の回答 例えば、Windows FormのDataGridViewでチェックボックスをクリックしたときに…
C#をデバッグ実行するとfinallyブロックに入らない - @ledsun blogを書いたら、つぎのような情報をもらいました。 「例外発生時に停止する」みたいな設定がONになってるんじゃないかしらhttps://t.co/pFsNahAN1B https://t.co/x5w89PxzzH— いわた (@wonderfu…
こういうC#のソースコードがあります。 using System; namespace ConsoleApp1 { internal class Program { static void Main(string[] args) { try { var hoge = 0; var fuga = 1; var piyo = fuga / hoge; } finally { Console.WriteLine("finally"); } } }…
Roslynを使ってC#のソースコードを編集する - @ledsun blog でRoslynをつかうとC#のソースコードが編集出来るとわかりました。 編集内容を変えて練習します。 クラス名を変えてみます。 using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp;…
自分で自分用のC#のソースコード編集ツールをつくったら捗りそうなことに気がつきました。 ググってみたら GitHub - dotnet/roslyn: The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs. というのでC#のソース…
C#とJavaScriptとRubyのプログラミングを比較するためにGitHub - ledsun/enumerable: C#とJavaScriptとRubyのコレクション操作を比較するためのリポジトリです。を作りました。 動作確認のために、全部のプログラムをバーンと実行するスクリプトが欲しいです…
大抵のプログラミング言語でコレクション(列挙できる何か)をメソッドチェーンで操作できます。 プログラミング言語ごとに、ちょっとずつちがうので整理してみようと思います。 僕の馴染みのあるC#、JavaScript、Rubyでそれぞれ書いてみます。 お題 お題は…
C# FizzBuzz Switch Solution - Stack Overflow のみたことないタイプのパターンマッチングを参考にしました。 static string FizzBuzz(int number) { return number switch { < 1 or > 100 => "", _ => (number % 3, number % 5) switch { (0, 0) => "FIZZB…
Snap を使用して Linux に .NET をインストールする - .NET | Microsoft Docs の手順でインストールしてみます。 $ sudo snap install dotnet-sdk --classic --channel=6.0 [sudo] password for ledsun: $ dotnet-sdk (6.0/stable) 6.0.301 from Microsoft .…
NUnitではTestCase属性で、テスト関数にわたす引数が設定出来ます。 TestCase | NUnit Docs のサンプルを例にすると、次です。 [TestCase(12, 3, ExpectedResult=4)] [TestCase(12, 2, ExpectedResult=6)] [TestCase(12, 4, ExpectedResult=3)] public int D…
Visual Studioで.NET Frameworkを使ったアプリケーションをつくろうとするとプロジェクトにApp.configというファイルができます。 Windows FormなりWPFなりのデスクトップアプリケーションの場合、ビルドすると出力ディレクトリに実行ファイル名.configとい…
次のメッセージボックスを表示するだけのアプリケーションです。 表示するメッセージボックス Visual Studio 2022で、新しいプロジェクトを追加して「Windowsフォームアプリ」を選びます。 .NET Frameworkのバージョンは6にします。 Program.csの内容を次の…
とあるアプリケーションの対象とする.NET Frameworkのバージョンを上げたところ printPreviewControl.Document = pd; という、一見、副作用がなさそうなソースコードの有無で振るまいが変わるようになりました。 調べてみたら、表題の通り、PrintPreviewCont…
オブジェクト指向という言葉には オブジェクト指向分析(OOA) オブジェクト指向設計(OOD) オブジェクト指向プログラミング(OOP) の三つの意味があります。 オブジェクト指向初心者泣かせです。 ここではオブジェクト指向設計を説明します。 ソフトウェアの設…
J2EEパターンから始まって今となっては一般的になったDAOパターン、の詳細設計。 DTO DTOは更新時間、更新ユーザ以外のテーブルカラムをすべて持たせる。 カラム名とプロパティ名を対応させておくとINSERTとUPDATEのSQLを動的に生成できて楽。 マスタメンテ…
スタイルシートの用意。scroll1クラスをtableに指定します。 *1 .scroll1 thead, .scroll1 tbody { float: left; } .scroll1 tbody { height: 100px; overflow-y: scroll; } GridViewはデフォルトではtheadを生成しないので、次のおまじない*2 *3。 GridView…
usingの並べ替え Ctrk + K, Ctrl + D ローカル変数の型をvarに 余計な空行を削除 一回しか使わないローカル変数をインライン展開 定義順変更 DAOのメソッドをCRUD順に並べる ユーザコントロールのメソッドを、public、イベントハンドラ、privateの順に並べる…
つい配列にJoinして、インテリセンスがLINQっぽい表示を出し、「何Joinだっけ〜?」と頭を悩ますのでメモ。
リファクタリングしたらC#3.0、特にLINQと拡張メソッドが素晴らしいことを実感しました。例示します。 元コード C#2.0で書きました。 リファクタリング後 C#3.0です。大きい変更点は ループをLIQNとstring.Joinに置き換え インスタンスメソッドを拡張メソッ…
前回のエントリのようにクエリストリングにURLに使えない文字列を入れる時は、Responce.Reideirectに渡す前にURLエンコーディングする必要があります。毎回エンコードを意識するのは面倒なので以下のようなクラスを作ってみました。 使い方 hoge=fugaという…
背景色を薄くするためにRGBを変更します。 int oldColor = BackColor.ToArgb(); int r = (oldColor & 0x00FF0000) >> 16; int g = (oldColor & 0x0000FF00) >> 8; int b = oldColor & 0x000000FF; int addValue = 20; r = (r + addValue) > 0xFF ? 0xFF : r …
WebClientの代わりにWebRequestを使い、HttpUtility.UrlEncodeの代わりにUri.EscapeUriStringを使うとSystem.webへの参照を追加する必要がなくなります。WebRequestはデフォルトでGETメソッドを使うため明示的にPOSTメソッドを指定する必要があります。 usin…
C#からTwitterに発言するコードです。NetworkCredential生成の第一引数にTwitterのユーザ名、第二引数をパスワードを入れれば発言することが出来ます。 コンソールプロジェクトを新規作成し、System.Webへの参照を追加し、下記のプロジェクトを張り付ければ…
.NET FrameworkではRound関数は四捨五入ではなく、JIS丸め*1という方式をとっています。次のように四捨五入とは違う結果が返ってきます。 using System; using System.Data; using NUnit.Framework; using NUnit.Framework.SyntaxHelpers; [TestFixture] pub…
前回作成したGetEnumuratorメソッドで反復しブロックがどのようなコードを生成したかReflector*1で見てみましょう。 public IEnumerator<int> GetEnumerator() { <GetEnumerator>d__0 d__ = new <GetEnumerator>d__0(0); d__.<>4__this = this; return d__; } d__0というクラスを返すメソッドと</getenumerator></getenumerator></int>…
C#で自作のクラスをforeach文で呼び出したい場合はGetEnumuratorメソッドを実装すればforeach文で呼び出せるようになります*1。次のforeach文は foreach (int i in new Simplest()) { Console.WriteLine(i); } 以下のシンタックスシュガーです。 IEnumerator…
C#で以下のようなインデックスを指定するアクセスメソッドを持ったクラスを、インデクサ*1で置き換えたいと思うことがあると思います。 public class MyDic { private Dictionary<string, string> _data; public string GetAt(string index) { return _data[index]: } } クラ</string,>…
http://www.itarchitect.jp/technology_and_programming/-/35057-2.htmlNUnitで書くとこんな感じになります。 JUnit4と大体同じだと思いますが、staticなクラスはテストできないので注意が必要です。 製品コードとテストコードがすぐ隣にあるのがいいですね…