投稿

11月, 2016の投稿を表示しています

C#のショートサーキット評価でラムダ式の中のnullチェックを行う

イメージ
C#6.0から導入されている null 条件演算子の新しい書き方が便利です。 null 許容型でデータを取ってくる場合などに、null 参照で落ちることを防ぐことができます。 // サンプルクラス class Product { public decimal? Amount { get; set; } public string Name { get; set; } } // どっかに記述 var products = new List (); products.Add(new Product() { Name = "ほげほげガム", Amount = 98, }); products.Add(new Product() { Name = "ほげほげガム・プレミアム", Amount = 298, }); products.Add(new Product() { Name = "ほげほげガム・サンプル", Amount = null, }); products.Add(null); // これだと null を参照して例外になる // var total = products.Sum(x => x.Amount); // total = 396 var total = products.Sum(x => x?.Amount ?? 0);

2回POSTされてしまう現象にハマる

イメージ
ASP.NET MVC で、ページ内に配置した Button タグに対してイベントハンドラでクリックイベントを付け、Action を呼び出すようにしていたのですが、Action が 2 回呼ばれる現象に悩まされた。 調べてみると、Button タグというのは type を指定しない場合は submit であるため、クリックイベントの後に submit イベントも走ってしまっていたようだ。 Button タグを汎用的に使用したい場合、 type=button とする。 もちろん単純に submit したい場合はそのままで良い。

SQL Serverで直前のuniqueidentifierを取得

イメージ
SQLServer で、自動インクリメント設定をした uniqueidentifier に対して Insert を発行後、SELECT SCOPE_IDENTITY() を実行しても NULL が返ってきて ID が取得できませんね。 Returning ID of new row when ID is uniqueidentifier http://stackoverflow.com/questions/32405923/returning-id-of-new-row-when-id-is-uniqueidentifier 以下のようにして、明示的に用意した値をセットする方法しかないようです。 DECLARE @newGuid TABLE(newValue UNIQUEIDENTIFIER); INSERT INTO hoge (hoge_name) OUTPUT inserted.hoge_id INTO @newGuid(newValue ) values ('ほげ') SELECT @id = newValue FROM @newGuid

C#でGuidを比較する方法

イメージ
C# で GUID を扱う際、new Guid() でインスタンスを生成すると、空(ゼロのみで構成)の GUID になります。 これに対して、Guid.NewGuid() は新しい GUID を生成します。 以下のように比較できます。 var guid1 = new Guid(); if (guid1 == new Guid()) { guid1 = Guid.NewGuid(); } // 比較する際は、Guid.Empty でも良い。こちらのほうが見た目的にもわかりやすい。 var guid1 = new Guid(); if (guid1 == Guid.Empty) {  guid1 = Guid.NewGuid(); }

TypeScriptのto have a typedefの修正方法

イメージ
TypeScript で静的コード分析を行った際に大量に出がちな "to have a typedef" ですが、これは変数の宣言時に型を指定する必要があるという意味です。 var hoge = "ほげ"; alert(hoge); typedef expected variable-declaration: 'hoge' to have a typedef // これなら警告が消えます。 型の定義をしなければいけないのです。 var hoge: string = "ほげ";

TypeScriptの型変換

イメージ
TypeScript で文字から数値、数値から文字へ変換する方法です。 // 数値へ変換する var hoge = +$("#Hogebox").text(); // 2 alert(hoge++); // 文字列へ変換する // 21 alert(hoge.toString() + 1);