xin9le.net

Microsoft の製品/技術が大好きな Microsoft MVP な管理人の技術ブログです。

C#

値の破棄

C#

1 年ほど前 C# 7.0 の新規のについていろいろ書いていたのですが、値の破棄 (discards) という機能について書いてなかったことに気が付きました!ということで、イマサラですが紹介します。 これまでの「値を使わない」ときの書き方 コンパイルを通すために…

BuriKaigi 2017 in Toyama でライブコーディングしてきた

数えれば今回で早 5 回目。毎年恒例、北陸の恒例イベント (?) と言っても過言ではない C# 大好き MVP による、C# ドキドキ・ライブコーディング対決 !! をやってきました。これまでは @Fujiwo / @AILight / @xin9le の 3 人でしたが、今回は @RyotaMurohosh…

C# 7 をライブコーディングで解説してきました vol.3

10/22 (土)、日本マイクロソフト品川本社でCLR/H in Tokyo 第 11 回が開催され、そこに参加/登壇してきました。ハッシュタグは #clrhtky11。 ハロウィンデーということで謎のハロウィン仮装という辱めを受けながら頑張りました!...「無難じゃね?」という声…

C# 7 のサンプルコードを GitHub に公開しました

C#

これまで C# 7 の新機能を検証するときは何度もサンプルコードを作って / 消してを繰り返していたのですが...、ぎたぱそ先生 (@guitarrapc_tech) に「作ってくれたら僕が喜ぶ!」と言われたのもあって、約束を守るために一念発起してまとました! @guitarrap…

ラムダ形式メンバーの拡張

C#

2016/09/24 (土) の朝、Expression-Bodied Everything (= どこでもラムダっぽく) に関する Pull-Request が Roslyn の master ブランチにマージされました! C# 6 ではプロパティとメソッドの 2 箇所についてラムダ形式のメンバーを記述することができました…

throw 式

C#

2016/09/21 (水) の朝方、throw 式に関する Pull-Request が master にマージされました!これにより、これまでステートメント (文) としてのみ提供されていた throw を式として記述できるようになります。 throw 式が使えるところ パッと確認した範囲では、…

Roslyn の開発進捗が更新されました - 2016/09/21

2016/09/21 (水) の朝方、とある Pull-Request のマージにより Roslyn の開発状況/進捗 (Language Feature Status) が更新されました。でも実際に変更を加えたのは 2016/08/30 (火) っぽいので、約 1 か月前から決まっていた内容です。 Language Feature Sta…

Roslyn の開発進捗が更新されました - 2016/08/04

2016/08/04 (木) の朝方、Gafter 先生の Pull-Request が master にマージされ、それにより Roslyn の開発状況/進捗 (Language Feature Status) が更新されました。 以下はその引用です。 C# 7 / Visual Basic 15 に搭載予定 Feature Branch State Address o…

任意の型を戻り値に持つ非同期メソッド

C#

これまでの非同期メソッドは void / Task / Task<T> のいずれかを戻り値にしなければならないという制約がありました。 非同期メソッドが C# 5 で導入されてから早 4 年。もはやこれを「制約」と感じることはほとんどないくらい馴染んでしまっていますが、C# 7 </t>…

C# 7 をライブコーディングで解説してきました vol.2

7/16 (土)、福井大学でソフトウェア技術者サミット in 福井 2016が開催され、そこに参加/登壇してきました。ハッシュタグは #sesfukui (Software Engineer Summit in Fukui)。 開催の運びとなったのは VSUG DAY - THE FINAL - の懇親会で僕の師匠である小島…

型分解 - タプルから変数への展開

C#

7/12 (火) の早朝、長らく検討/開発されてきた待望の Deconstructions (= 型分解) が Roslyn の master ブランチにマージされました!(型分解というのは僕のテキトーな訳で、正式名称は未定) タプル構文が複数の値をひとつにまとめる機能だったのに対し、Dec…

変数宣言式

C#

約一か月前に C# 7 の新機能についてライブコーディングをしたと思ったら、もうその情報だけでは足りていなくて焦っている今日この頃。 あれから Roslyn のリポジトリ には大きな変化がありました。 future ブランチが master ブランチにマージされた! いく…

LINQ 大好き C#er がアイドルグループ LinQ のセットリスト考えてみた

C#er といえば LINQ が大好き!もちろん LinQ も大好き!? 昔は Twitter で LINQ と呟けば LinQ のメンバーさんにフォローされたり Fav されたりしたものでした。その頃から「せっかく LinQ なんて超素敵な名前だったら LINQ を題材にしたアルバムでも作れ…

C# 7 をライブコーディングで解説してきました

ここまで数回に渡って C# 7 の新機能について解説してきました。記事は以下にまとめてありますので是非ご覧ください。 と、そんなこんなまとめていたのを「C# ユーザー会 //build/ 2016 振り返り勉強会」で解説してきました。当日の朝にクローンしてきたばっ…

型スイッチ

C#

F# などの関数型言語をやっている方にはおなじみのパターンマッチング。「10 年おせーよ!」と言われそうですが、C# 7 にもそんな待ちに待った (?) 機能が搭載されそうです。主に既存の is キーワードと switch キーワードを拡張した、型に対するマッチング…

タプル構文 - 多値戻り値のサポート

C#

C# 7 では言語機能としてタプル (複数の値をまとめる) 構文 がサポートされそうです。これまでも複数の値を簡易的にパッケージングする機能として System.Tuple<T1, T2, ...> が提供されていましたが、より可読性が高く、パフォーマンスが良くなる形になる見込みです。例</t1,>…

最新の C# コンパイラ を利用してビルド/デバッグしてみた

そんな方法はひとつしかない、リポジトリをクローンしてビルドすることだ ということでやってみましょう!ちなみにこの記事は 5/9 現在の情報を基に書いています。近い将来に変更になる可能性は多分にありますので、その点ご了承ください m( )m Step.1 - Ros…

ローカル関数の使いどころ - LINQ 拡張 -

C# 7 で搭載予定のローカル関数。その詳細は以下を参照いただくとして、どういうケースで使えそうかと考えていたら「あ、そうか LINQ だ!」と思ったので紹介します。 yield (遅延評価) の罠 と書くだけで察しの良い方はお気付きかと思いますが、yield を含…

ref 戻り値 / ref ローカル変数

C#

今回は ref 戻り値 (Ref Returns) と ref ローカル変数 (Ref Locals) について見ていきます。それぞれの機能は端的に言うと以下のようなものです。 名称 機能 Ref Returns メソッドの戻り値を参照として返す Ref Locals 値を参照として受ける C++ に嗜みがあ…

ローカル関数

C#

コードを書いていると、稀に関数の中に「そこでしか使わない関数」を作りたくなる場合があります。例えば再帰処理などはその最たるものかと思います。C# 6.0 まではデリゲートを駆使して以下のように書いていました。 static void Main() { //--- 再帰処理し…

数値セパレーター

C#

C# 6.0 までの数値リテラルでは、桁数がどれだけになっても区切り文字を入れることができませんでした。今回 C# 7 で数値セパレーター (= Digit Separators) という機能が追加され、数値リテラルを自由に桁区切りしてグルーピングできるようになりました。 …

2 進リテラル

C#

すでに当たり前のように使っている機能ですが、C# 6.0 までは整数リテラル (整数値を表記する方法) として 10 進数と 16 進数がサポートされています。10 進数はそのまま数字を並べるだけ、16 進数は数値の前に 0x / 0X の接頭辞を付けます。 var dec = 123;…

Visual Studio 15 Preview で C# 7 を試す

C#

2016/03/30、Microsoft が開催したビッグイベント //build/ 2016 に合わせて Visual Studio 15 Preview が公開されました。 Visual Studio "15" Preview Downloads 今回の //build/ では bash が Windows 上でネイティブで動いたり、Bot Framework が公開さ…

DeclarativeSql v0.2.2 リリース

ちょうど 2 ヵ月前にリリースした DeclarativeSql v0.2 をマイナー更新し、v0.2.2 をリリースしました。最近 v0.2 系を使ってくださっている会社さんがあるとの連絡を受けまして、内心かなり嬉しく思っています :) 今回はマイナーということで機能改善がメイ…

30 分のライブコーディングでテトリス作った

2016/2/20 (土)、Japan ComCamp 2016 powered by MVPs という Microsoft MVP が中心となったイベントが全国一斉に開催されました。僕は例年通り北陸エリア (金沢開催) を担当していて、毎年恒例で超大好評の C# MVP によるドキドキ・ライブコーディング対決…

Null 許容型の既定値付き文字列変換

タイトルはそれっぽいですが、大したことありません。何度も作るのがめんどくさいのでメモとして残しておこうというだけのカジュアルなものです。 Null 許容型の文字列化 Web でもクライアントでもそうですが、MVVM 的な考え方をする場合に「データとしては …

DeclarativeSql v0.2 リリース

もう半年以上前から構想はしていたけれど、案の定 (?) 放置し続けてきた自作のデータベースアクセス補助ライブラリ DeclarativeSql。搭載したかった機能の中でも特に重要度が高かった機能を詰め込んでアップデートしました。この記事を書いている今現在はま…

IAsyncDisposableについて考えてみた

Visual Studio 2015 も RC (= リリース候補版) となり、C# 6.0 も Go-Live となりました。言語チームは Roslyn という大物の開発に注力していたため、C# 6.0 は細かな使い勝手の向上を中心とした比較的小規模な機能追加となっています。詳細は以下をご覧いた…

北陸新幹線開通記念!北陸・信州合同勉強会に参加してきました

2015 年 3 月 28 日 (土)、北陸新幹線の開通を記念して Hokuriku.NET と JAZUG 信州で合同勉強会を開催しました。多くの方に遠方からお越しいただき、本当に活気に溢れた勉強会となりました。最新の Azure 事情から、地方でスタートアップをする方法や可能性…

パラメーターなし構造体コンストラクタ

C#

C# 5.0 までは構造体 (struct) はパラメーターのないコンストラクタを作ることができませんでした (IL の制約ではなく C# の言語仕様としての制約)。これが結構「ぐぬぬ...」なときがありましたが、C# 6.0 では晴れてこの制限が解放されました。 struct Poin…