xin9le.net

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

C#

paiza.IOの実行環境を覗き見る方法4選

ブラウザだけで様々な言語のコードを即時実行できる、超便利なオンラインプログラミング環境 paiza.IO。前の記事で C# で実行環境を調査するという遊びをやっていました。 C#もOK! paiza.IOでお手軽オンラインプログラミング - xin9le.net 今回はその延長と…

C#もOK! paiza.IOでお手軽オンラインプログラミング

前回書いたオープンデータの記事 (オープンデータ先進県「福井」の残念なデータに思う) が大反響で、非常に多くの方に読んで頂けました。通常の 10 倍以上のページビューが出て、ただただ驚くばかりでした。 オープンデータ先進県「福井」の残念なデータに思…

using staticするとObsoleteが警告されない

Obsolete 属性、使ってますか?「もう古い API だから使わないでねー」とコンパイラ警告を出すて注意喚起するための便利属性です。以下のように利用します。 class Program { [Obsolete("NewMethod を利用してください")] public static void OldMethod(){ .…

MVP Community Camp 2015 資料

富山合同勉強会 .NET & Java ~ぶりしゃぶで休もう~ という、.NET と Java とブリしゃぶがごった煮になった、激アツな勉強会に参加/登壇してきました。ホテルのイベントルームを貸し切って .NET 部屋と Java 部屋に分けてセッションを行い、興味のある方を…

DeclarativeSql

本記事は C# Advent Calendar 2014 最終日向けの記事です。なんとか間に合わせようと心底努力しましたが、業務上年末にシステムリリースがある関係で忙殺されていて全く余裕がなく、結局最終日に穴を空ける結果になってしまいました。ここまで繋いで下さった…

挿入文字列

C#

string.Format メソッドは大変汎用的で便利です。しかし、ちょっとばかり煩雑で、かつ書式文字列内のプレースホルダーの数が合わなかったりするエラーが発生しやすいという傾向にあります。 var p = new Person("xin9le", 30, Sex.Male); var t1 = string.Fo…

インデックス初期化子

C#

バージョン 5.0 現在の C# には「初期化子」と呼ばれる機能が 2 つあります。ひとつはオブジェクト初期化子で、インスタンス生成時にコンストラクタ引数を利用せずにフィールドやプロパティの値を設定するものです。もうひとつはコレクション初期化子で、こ…

.NET Framework 4.5.3でのTask型への機能追加

しばらく前になりますが、2014/10/6 に Visual Studio 14 CTP 4 がリリースされました。そのリリースの中で .NET Framework も更新され、バージョン 4.5.3 となりました。少し触っていたら、Task 型 (System.Threading.Tasks 名前空間) に新しいプロパティと…

Hokuriku.NET vol.15 資料

2014年8月30日 (土)、我らがHokuriku.NET主催の定期勉強会Hokuriku.NET vol.15に参加/登壇してきました。今回は小島さん (@Fujiwo) と一緒にC# MVPsとしてC# vNextの新機能を紹介し、ひとつひとつ解説していきました。参加者のみなさんとの緩いディスカッシ…

Add拡張メソッドによるコレクション初期化子

C#

C# 3.0で導入されたコレクション初期化子をご存知の方は多いと思います。要素を追加した状態でコレクションを生成する機能です。以下のようなものです。 var languages = new List<string> { "C#", "Visual Basic", "JavaScript", }; これは次のコードの糖衣構文です</string>…

nameof演算子

C#

これまでC# vNextの新機能についていくつか紹介してきましたが、個人的にラムダ形式プロパティよりも、null伝搬演算子よりも、catch/finally句で利用できるawait演算子よりもずっと ×2 興奮したのが今回取り上げるnameof演算子 (nameof operator) です。簡単…

ラムダ形式メソッド

C#

前回ラムダ形式プロパティを紹介しました。ラムダ式チックなメンバー (Expression-bodied members) は、Visual Studio 14 CTP 2まではプロパティしか実装されていませんでしたが、一昨日 (2014/08/19) リリースされたVisual Studio 14 CTP 3にはメソッド版も…

ラムダ形式プロパティ

C#

みなさんもGetterだけのプロパティを作った経験があるかと思います。例えば以下のようなものです。 using System.Math; using System.Windows; namespace CSharpVNext { class Circle { public double Radius{ get; }; public Point Origin{ get{ return new…

null条件演算子

C#

三項演算子はひとつの式の中で条件式を表現できて非常に便利です。言うまでもないかもしれませんが、例えば以下のような書き方ができます。 var name = "じんぐる"; return name == null ? "不明" : name; /* //--- 以下と同じ意味 var name = "じんぐる"; i…

例外フィルター

C#

例外処理はtry句でスローされる例外の型に応じて処理を書き分けます。また、ひとつの例外の型でエラー条件が分かれる場合はcatch句の中にif文を書いて分岐します。例えば以下のような感じです。 try { //--- SQL Serverへの何らかのアクセス } catch (SqlExc…

catch/finallyでのawait

C#

C# 5.0で搭載された非同期メソッド (async/await) は、非同期処理を非常に簡単に記述できる言語機能として大変重宝し、愛されています。await演算子は通常のメソッドだけでなくラムダ式内でも利用できるなど、かなり広範囲への適用が可能です。しかし例外処…

変数宣言式

C#

これまで、以下のようなコードを面倒に感じたことはありませんか? static void Main() { try { Console.WriteLine(int.Parse("123")); //--- intに変換できなかったら例外発生! } catch { //--- 失敗したとき } } 絶対失敗しないと保証されているなら例外…

静的メンバーへの簡易アクセス

C#

C#で提供されているusingキーワードは「usingステートメント」と「usingディレクティブ」の2種類あります。このうちusingディレクティブは以下の2つの場合に利用できました。 名前空間の省略 (= 指定された名前空間内の型は名前空間を修飾しないで使用可能) …

プライマリコンストラクタ

C#

今回取り上げるのは「プライマリコンストラクタ」です。テキトーな日本語に直すと「一次コンストラクタ」などといった感じになるのでしょうか。この機能を簡単に説明すると、コンストラクタをひとつだけ定義する機能です。それでは順番に見て行きましょう。 …

自動実装プロパティ初期化子

C#

「Try! C# vNext」ということで、次期C#の新機能を少しずつ試していきたいと思います。まず最初は自動実装プロパティ初期化子 (= Auto-property initializers) です。これまではメンバー変数の初期化はクラス宣言と同時にできたのですが、自動実装プロパティ…

Try! C# vNext

C#

次期バージョンの C# に搭載される予定の新機能を簡単にご紹介

Visual Studio 14 CTPでC# vNextを試す

2014年6月3日にVisual Studio 14 CTPがリリースされました。次世代コンパイラサービスであるRoslyn、クラウド最適化や大幅なライブラリ統合が進んでいるASP.NET vNextが搭載されています。これらだけでも十分お腹いっぱいになりそうですが、我らがC#にも新し…

暗黙的にenumに変換できるゼロ

ここ最近、#じんぐる先生とか言って部署の新人さんにC#プログラミングを教えています。クラス/継承/多態などのオブジェクト指向の基礎から時間を掛けてみっちりと。そんな中、例題を出して説明しながら答え合わせしていたとき次のような現象に出くわしました…

dynamicとinterfaceによる実行時例外

Twitterを見ていたら、SignalRの開発者@davidfowlさんがこんなツイートをしていました。 Here's the compiler bug I found today https://t.co/KY38SnBfDI /cc @KirillOsenkov— David Fowler (@davidfowl) July 2, 2013 彼が発見したというバグを再現するコ…

参照設定せずにFormを表示する

ハンズオン勉強会、Hokuriku.NET C# メタプログラミング ~リフレクション~に参加しました。その中で、アセンブリの動的読み込みをする時間がありました。参照設定に加えられていないアセンブリに含まれているクラスのインスタンスを作る、というものです。…

LINQにオレオレ機能を追加

LINQは便利です。LINQが使える環境なら率先して使いたいところです。LINQに出会ってからは、LINQに依存し過ぎてLINQがないと生きられない体になってしまいました。LINQさん、愛してます.../// と、くだらない前フリはさておき、LINQを使っていて思うことは「…

Null許容型と三項演算子

イマサラですが、三項演算子 (条件演算子) ってコンパクトに書けていいですよね。利用条件というか制約はありますが、オブジェクト初期化子などif文が書けないようなところにも書くことができて大変便利です。三項演算子は書き方がどーのこーのということが…

非同期メソッド入門

.NET Framework 4.5 / C# 5.0 から提供された非同期メソッドについての連載インデックス