プログラミング C# - 翔ソフトウェア (Sho's)

C#/.NET/ソフトウェア開発など

C#

Shos.CsvHelper (CSV を読み書きするためのシンプルなライブラリー)

csv (Comma-Separated Values または Character-Separated Values) を読み書きするためのシンプルなライブラリーを書いてみた。 csv 形式のファイルは Excel などで表示/編集することができ、便利なので、そこそこ必要になる。 csv を読み書きするライブラリ…

Tips: interface と partial class で横断的関心事を分離

C#

※ C# Advent Calendar 2016 の12月23日の記事。 前の日の記事: 次の日の記事: Material Design In XAML Toolkit で WPF アプリにモダンな UI を! | Qiita 以前、「C# Tips: interface を 抽象クラス (abstract class) とどう使い分けるか」という記事を書い…

浮動小数点数型 double と誤差 ~double の内部表現~

C#

※ C# Advent Calendar 2015 の12月19日の記事。 前の日の記事: 真・Roslyn for Scripting! あなたのアプリケーションにもC#スクリプトを!! - kekyoの丼 次の日の記事: Code整形でちょっと役立つCodeMaidの利用方法 C 等を使用している場合と異なり、C# では…

マイクロソフト キャンペーンの「C丼」を作って実食してみた

C#

C丼キャンペーン マイクロソフトが「C丼キャンペーン」というのを始めようとしているようだ。 C丼キャンペーン 手元に C丼のストラップがある。 C丼ストラップ プログラミング言語 C# (シーシャープ) の "#" の文字は実は、井桁 (number sign: 番号記号) で…

IQueryable な Twitter のタイムライン クラスと LINQ プロバイダー

「C# Advent Calendar 2014」の12日目の記事。 前の記事 ← → 次の記事 以前、「[C#][式木][LINQ] Hokuriku.NET C# 勉強会『C# 式木』(2014-10-26、金沢) のスライド公開」で、IQueryable な LINQ について解説した。 LINQ to Objects 復習 IQueryable<T> 式木 (</t>…

Hokuriku.NET C# 勉強会『C# 式木』(2014-10-26、金沢) のスライド公開

『Hokuriku.NET C# 勉強会『C# 式木』(2014-10-26、金沢) で発表した資料に大幅に加筆して公開。 2014-10-26 「C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~」 from Fujio Kojima

『ラムダ式でステップアップ! C#のプログラムから汎用的なアルゴリズムを切り出すことで、LINQについての理解を深めよう』 - CodeZine

C#

※ [C++] 『ラムダ式でステップアップ! C++のプログラムから汎用的なアルゴリズムを切り出し利用してみよう』 - CodeZine の続き。 C# によるプログラミングの記事を投稿。 『ラムダ式でステップアップ! C#のプログラムから汎用的なアルゴリズムを切り出すこ…

C# 6.0 プレビューのスライド公開

※ 「[Event] Hokuriku.NET Vol.15 in FUKUI 開催」の続き。 スライド 『Hokuriku.NET vol.15』2014-08-30(土) の「酒の肴はC# vNext」で発表した資料を公開。 C# 6.0 Preview from Fujio Kojima 関連記事 .NET Compiler Platform ("Roslyn") での C# 6.0 の…

「世界一IQの低いソースコードはこれ。」のような if 文を書いた場合の速度を測ってみた

C#

「世界一IQの低いソースコードはこれ。」で始まる tweet が興味深かった。 https://twitter.com/vjroba/status/494882208788660226 世界一IQの低いソースコードはこれ。 if と else を使って KeyEvent クラスの中の 200 を超える数の定数と一つずつ比較して…

C# 3.0 以降の資料

C#

C# 3.0 以降の勉強会用に資料を作ってみた。 C# 3.0 以降 from Fujiwo [C#][.NET] プログラミング C# (開発関連) - 目次

Build 2014 でオープンソースになったと発表された Roslyn のソースコードを弄ってみた

Build 2014 での Roslyn 関連の発表 先日、マイクロソフトの開発者会議 BUILD 2014 (4月2–4日、米国サンフランシスコ) で Roslyn がオープンソースとして公開されたことが発表された。 BUILD 2014 での Roslyn の発表に関連した記事/サイト [Video] The Futu…

Room metro #23 大阪「メタプログラミング C#」の資料公開

Room metro #23 大阪 (3月1日) でやったセッションの資料を公開。 メタプログラミング C# from Fujiwo サンプル コード サンプル コードはこちら。 ■ [C#][メタプログラミング][Reflection][Expression][式木][Roslyn][dynamic] 関連記事一覧 ■[C#][ラムダ式…

ImageData によるマンデルブロ集合の描画

※ 『[TypeScript] ImageData によるピクセル単位の描画』の続き。 前回は、HTML5 の Canvas に ImageData を作成してランダムなピクセルを描画した。 今回も同様にピクセル単位の描画を行ってみよう。少しだけ応用してマンデルブロ集合を描画してみる。 マン…

メタプログラミング入門 - Roslyn による C# ソースコードの解析と変更

この記事は、「C# Advent Calendar 2013」の 12 月 12 日分。 ※ 「[C#][.NET][CodeDOM] メタプログラミング入門 - CodeDOM によるクラスの生成」の続き。 Roslyn Roslyn は、C# や Visual Basic のコンパイラーの内部の API 等を公開したものだ。"Compiler a…

メタプログラミング入門 - CodeDOM によるクラスの生成

※ 「[C#][.NET][CodeDOM] メタプログラミング入門 - CodeDOM による Hello world!」の続き。 CodeDOM によるクラスの動的生成 前回は、CodeDOM を使って Hello world! を表示するプログラムを動的に生成した。 もう少し CodeDOM を使ってみよう。 今回は、Co…

メタプログラミング入門 - CodeDOM による Hello world!

※ 「[C#][.NET] メタプログラミング入門 - 応用編 - オブジェクトの文字列変換のメタプログラミング (パフォーマンスのテスト)」の続き。 CodeDOM による動的コード生成 これまで、Reflection.Emit、式木、Roslyn による動的コード生成を試してきた。これら…

メタプログラミング入門 - 応用編 - オブジェクトの文字列変換のメタプログラミング (パフォーマンスのテスト)

※ 「[C#][.NET][Roslyn] メタプログラミング入門 - 応用編 - オブジェクトの文字列変換のメタプログラミング (Roslyn 編)」の続き。 オブジェクトの文字列変換のメタプログラミング ここまで、8通りの文字列変換メソッドを見てきた。 メソッドの動的生成を行…

メタプログラミング入門 - 応用編 - オブジェクトの文字列変換のメタプログラミング (Roslyn 編)

※ 「[C#][.NET][式木] メタプログラミング入門 - 応用編 - オブジェクトの文字列変換のメタプログラミング (式木編)」の続き。 Roslyn によるメタプログラミング Roslyn によるメタプログラミングに関しては、以前、次にあげる記事で扱った。参考にしてほし…

メタプログラミング入門 - 応用編 - オブジェクトの文字列変換のメタプログラミング (式木編)

※ 「[C#][.NET] メタプログラミング入門 - 応用編 - オブジェクトの文字列変換のメタプログラミング (Reflection.Emit 編)」の続き。 式木によるメタプログラミング Reflection.Emit の次は、式木によって文字列生成を行う例を見ていこう。 題材は同じく 「[…

プログラミング C# (開発関連) - 目次

プログラミング C# (開発関連) - 目次 <h4><a href="http://blog.shos.info/common/csharp_expression_index.html" data-mce-href="http://blog.shos.info/common/csharp_expression_index.html">■[C#][ラムダ式][LINQ][Expression][式木] 関連記事一覧</a></h4> <h4></h4>

メタプログラミング入門 - 応用編 - オブジェクトの文字列変換のメタプログラミング (Reflection.Emit 編)

※ 「[C#][.NET] メタプログラミング入門 - 応用編 - オブジェクトの文字列変換のメタプログラミング」の続き。 Reflection.Emit によるメタプログラミング それでは、Reflection.Emit を用いて文字列生成を行う例を見ていこう。 題材は 「[C#][.NET] メタプ…

メタプログラミング入門 - 目次

■ [C#][メタプログラミング][Reflection][Expression][式木][Roslyn][dynamic] 関連記事一覧

メタプログラミング入門 - 応用編 - オブジェクトの文字列変換のメタプログラミング

※ 「[C#][.NET] メタプログラミング入門 - 応用編 - オブジェクトの文字列変換を静的/動的に行う」の続き。 前回は、メタプログラミングによらない静的な方法とリフレクションによる動的な方法で、オブジェクトを文字列に変換した。 今回から、メタプログラ…

メタプログラミング入門 - 応用編 - オブジェクトの文字列変換を静的/動的に行う

※ 「[C#][.NET] メタプログラミング入門 - メソッド呼び出しのパフォーマンスの比較」の続き。 前回は、コード生成を行ってメソッド呼び出しを行う3通りの方法と静的なメソッド呼び出しや動的なメソッド呼び出しのパフォーマンスを比較した。 今回から、少し…

メタプログラミング入門 - メソッド呼び出しのパフォーマンスの比較

※ 「[C#][.NET] メタプログラミング入門 - Add メソッドのパフォーマンスの比較」の続き。 C# によるメタプログラミングでのパフォーマンスの比較 前回は、C# によるメタプログラミングで Add メソッドを動的生成した場合の実行速度を測定した。 今回も同様…

メタプログラミング入門 - Add メソッドのパフォーマンスの比較

※ 「[C#][.NET] メタプログラミング入門 - Roslyn による Add メソッドの動的生成」の続き。 C# によるメタプログラミングでのパフォーマンスの比較 前回まで、C# によるメタプログラミングで Add メソッドを動的生成するプログラムを作成してきた。 [C#][.N…

メタプログラミング入門 - Roslyn による Add メソッドの動的生成

※ 「[C#][.NET] メタプログラミング入門 - 式木による Add メソッドの動的生成」の続き。 Roslyn によるメタプログラミング 前回は、式木を用いて Add メソッドを動的生成するプログラムを作成した。 今回は、Roslyn によるメソッドの動的生成だ。 Roslyn は…

メタプログラミング入門 - 式木による Add メソッドの動的生成

※ 「[C#][.NET] メタプログラミング入門 - Reflection.Emit による Add メソッドの動的生成」の続き。 式木によるメタプログラミング 前回は、Reflection.Emit を用いて Add メソッドを動的生成するプログラムを作成した。 今回は、式木によるメソッドの動的…

メタプログラミング入門 - Reflection.Emit による Add メソッドの動的生成

※ 「[C#][.NET] メタプログラミング入門 - はじめに」の続き。 Reflection.Emit によるメタプログラミング 前回は、C#/.NET でメタプログラミングを行う方法について述べた。 これから数回に渡って、それぞれの方法について紹介していきたい。 今回は、Refle…

メタプログラミング入門 - はじめに

数回に渡って、C#/.NET によるメタプログラミングを紹介して行きたい。 先ずは概要から。 ■ メタプログラミング ・メタとは メタ (meta) は、「高次な-」「超-」等の意味の接頭語で、ギリシャ語から来ている。 プログラミングでは、メタプログラミングの他…