読者です 読者をやめる 読者になる 読者になる

プログラマーな日々

プログラマーをやっています。好きなツール:WorkFlowy、好きな言語:C#、好きなサービス:Backlog、好きなAWS:AWS Lambda。

【.NET】指定した文字で桁埋めできる値を表すFormattableValueクラスを書いてみた

概要 指定した文字で桁埋めできる値を表すFormattableValueクラスを書いてみました。

【.NET】型を指定してEnumにParseするParse<T>メソッドを書いてみた

Enum.Parseを使って、文字列をEnumにParseするには以下のように書きます。 (Creature) Enum.Parse(typeof(Creature), "Human"); 型を2回指定するのが面倒なので、型を指定してEnumにParseするParse<T>メソッドを書いてみました。</t>

【.NET】MSTestのExpectedExceptionAttributeの奇妙な振る舞い

MSTestで、ExpectedExceptionAttributeを使用したところ、挙動が自分の想定と違っていたので、調べてみました。

【C#】 数値の変数をvarで宣言した場合の型の違い

C#で、数値の変数をvarで宣言した場合の型の違いを確認してみました。

【.NET】Dapper始めの一歩(インストールからレコード取得まで)

.NET用マイクロORMのDapperを始めてみました。

【Dapper】Dapperでパラメーターを使用する

Dapperでパラメーターを使用してみます。

【.NET】文字列が指定された書式の日時として妥当かどうかを返す拡張メソッドIsValidAsDateTimeExact

前回は、文字列が日時として妥当かどうかを返す拡張メソッドを作成しました。 blog.jhashimoto.netそこで、今回は、文字列が指定された書式の日時として妥当かどうかを返す拡張メソッドIsValidAsDateTimeExactを作成してみます。

文字列が日時として妥当かどうかを返す拡張メソッドIsValidAsDateTime

文字列の変換は不要で、日時として妥当かどうかを知りたいだけの場合、DateTime.TryParseを使うのは、煩わしいですよね。 DateTime result; // わざわざ変数を宣言しなければならない。 bool isValid = DateTime.TryParse("2016/01/01", out result); そこで…

Visual Studio 2015で現在のコンテキストのテストを実行する方法

Visual Studio 2015で、現在のコンテキストのテストを実行する方法を紹介します。

【.NET】IEnumerable<T>.ToArrayとToListの速度を比べてみた

IEnumerable.ToArrayとToListの速度を比べてみました。

【.NET】.NET FrameworkのソースコードがWebサイトで公開されています

.NET Frameworkのソースコードは以前から公開されてましたが、今はWebサイトがあるのですね。知りませんでした。

【.NET】HashSet<T>に拡張メソッドでAsReadOnly<T>を実装する

前回、HashSetに拡張メソッドで、AddRangeを実装しました。blog.jhashimoto.net今回は、同様にAsReadOnly<T>を実装してみました。</t>

【.NET】HashSet<T>に拡張メソッドでAddRangeを実装する

List<T>にはAddRangeがありますが、なぜかHashSet<T>にはありません。拡張メソッドで実装してみました。 HashSetExtensions.cs using System; using System.Collections.Generic; namespace Extensions { public static class HashSetExtensions { /// <summary> /// 指定し</summary></t></t>…

【.NET】String.Formatで "{" と "}" を出力する

String.Formatで "{" と "}" を出力するには、"{" または "}" を2つ続けて記述します。

【.NET】指定された文字列を文字列の末尾から削除する拡張メソッドString.TrimEnd

前回、TrimStartのオーバーロードを書いたので、今回はTrimEndのオーバーロードを書きたいと思います。blog.jhashimoto.net

【.NET】指定された文字列を文字列の先頭から削除する拡張メソッドString.TrimStart

String.TrimStartは、引数がcharです。Stringが引数のオーバーロードを書いてみました。

【.NET】IEnumerable<T>をCollectionに変換する拡張メソッドToCollection

ToListがあるなら、ToCollectionがあってもいいと思い、書いてみました。

【C#】任意のXMLを読み込めるクラスXmlLoaderをつくってみた

この記事は、C# Advent Calendarの22日目です。qiita.com任意のXMLを読み込めるクラスXmlLoaderをつくってみました。

【.NET】String.TrimEndにnullまたは空の配列を渡すと空白文字が削除される

前回、String.TrimStartにnullまたは空の配列を渡すと空白文字が削除されることを確認しました。

【.NET】String.TrimStartにnullまたは空の配列を渡すと空白文字が削除される

クラスライブラリリファレンスによると、String.TrimStartにnullまたは空の配列を渡すと空白文字が削除されるそうです。

【.NET】指定した文字列を削除した文字列を取得する拡張メソッドRemove

指定した文字列を削除した文字列を取得する拡張メソッドRemoveです。

【.NET】文字列を行に分割する拡張メソッドSplitToLines

文字列を行に分割する拡張メソッドSplitToLinesです。

【.NET】文字列が数字のみで構成されているかどうかを取得する拡張メソッド

文字列が数字のみで構成されているかどうかを取得する拡張メソッドIsNumberOnlyです。

【.NET】指定された文字数の文字列を文字列の左端から取得する拡張メソッド

指定された文字数の文字列を文字列の左端から取得する拡張メソッドLeftです。

【.NET】文字列の右端から指定された文字数の文字列を取得する拡張メソッド

文字列の右端から指定された文字数の文字列を取得する拡張メソッドです。

power-assertの.NET版があった

最近気になっているキーワード「power-assert」の.NET版を見つけました。PowerAssert/PowerAssert.Net · GitHubあとで試します。

【.NET】DataTableの内容を比較する

QA@ITに投稿してみました。c#.net でDataTableの内容を比較する方法について - QA@IT 以下のDataTable1とDataTable2を比較して不一致分を表示したいのですが グルグルとループさせて1つずつ比較するぐらいしか方法を思いつきませんでした。 何かもっとスマー…

IEnumerable<T>に拡張メソッドとしてNotAnyを実装する

IEnumerable<T>に拡張メソッドとしてNotAnyを実装してみました。</t>

【C#6.0の新機能】Auto-property initializers

Visual Studio 2015 Previewのマシンイメージを使って、Azure仮想マシンを立てたので、C#6.0の新機能を試してみます。今回は、Auto-property initializersです。

【.NET】Null安全なStringBuilder.AppendFormatを拡張メソッドで実装する

どういうこと? String.FormatやStringBuilder.AppendFormatは、パラメータにNullを渡すと例外が発生します。

「CLR/H in Tokyo 第3回 」に行ってきた(「C#や.NET Frameworkがやっていること」by 岩永信之さん)

6/28に「CLR/H in Tokyo 第3回」の勉強会に行ってきました。CLR/H in Tokyo 第3回 - connpass 岩永信之さんのセッション「C#や.NET Frameworkがやっていること」で、メモしたことを書いておきます。

nullを許容しない参照型クラス

.NETにはnullを許容する値型nullableがあります。 逆にnullを許容しない参照型クラスがあったら、予期しないnull例外を避けられると思い作ってみました。 Unnullable.cs using System; namespace UnnullableTest { public class Unnullable<T> where T : class </t>…

EventLog.WriteEntry メソッドで出力可能な最大文字数が Windows のバージョンによって異なる

EventLog.WriteEntryメソッドの不具合情報です。 EventLog.WriteEntry メソッドで出力可能な最大文字数が Windows のバージョンによって異なる.NET Framework System.Diagnostics.Eventlog.WriteEntry メソッドのリファレンスには、出力文字列が 32766 バイ…

Silverlightのコントロールの機能別一覧

Silverlightのコントロールの機能別一覧です。 コントロールの機能別一覧Silverlight には、さまざまな機能を実行するクライアント コントロールがあります。 機能が類似したコントロールを比較して、シナリオに合ったコントロールを選択できます。 これらの…

Entity Frameworkコードファーストを試してみた

型付きデータセット + テーブルアダプターの抱える問題 データアクセスは、型付きデータセット + テーブルアダプターにずっと頼ってました。でも採用することにためらいを感じ始めました。複数人で同時に開発すると、コンフリクトが発生します。でも型付きデ…

WCFテストクライアントでWCFサービスをテストする

WCFテストクライアントでWCFサービスをテストする方法を紹介します。 検証環境 Visual Studio 2010 SP1 手順 WCFサービスを起動する ※MEXエンドポイントを公開する必要があります。 Visual Studio コマンドプロンプトを起動する メニュー[Microsoft Visual S…

Sandcastle Help File Builder が Visual Studio 2012 と .NET Framework 4.5 をサポートしました

Sandcastle Help File Builder が、バージョン1.9.5.0で Visual Studio 2012 と .NET Framework 4.5 をサポートしました。 This new release supports Visual Studio 2010 and 2012 solutions and projects as documentation sources, and adds support for …

OfficeのCOMオブジェクトを自動で解放してくれるライブラリNetOfficeがすばらしい

.NETからOfficeを扱うのは非常に面倒です。1つでもCOMオブジェクトの解放漏れがあるとプロセスが解放されずに残ってしまうからです。 複数のCOMオブジェクトを確実に解放する - プログラマーな日々.NETでCOMを扱う際に、複数のCOMオブジェクトを確実に解放…

アプリケーション構成ファイルを編集する

app.configの設定値を変更する方法を紹介します。 検証環境 Visual Studio 2010 SP1 .NET Framework 4 app.config <configuration> <appSettings> <add key="hoge" value="foo"/> </appSettings> </configuration> ソースコード using System.Configuration; namespace AppConfigSample { class Program { stat…

DataGridViewのDataBindingCompleteイベントが複数回発生する現象に対処する

DataGridViewのDataBindingCompleteイベントが複数回発生する現象に遭遇しました。 検索で次のブログがヒットしました。 DataGridView の DataBindingComplete イベントの発生回数 コード内で DataSource と DataMember の設定を行うとして、DataSource → Da…

イベントハンドラはprotectedにしないとマークアップからは参照できない

イベントハンドラはprotectedにしないとマークアップのクラスからは参照できません。 ButttonコントロールのClickイベントを例として説明します。 どういうこと? ビハインドコードにイベントハンドラ(Button_Click)を作成し、アクセス修飾子をprivateまた…

Evalの戻り値をメソッドの引数にする場合は明示的にキャストしなければならない

Evalの戻り値をビハインドコードのメソッドの引数にしたいことがあります。 例えば、以下のようなメソッドをマークアップから呼び出す場合です。 /// <summary> /// コードから表示文字列を取得します。 /// </summary> /// <param name="value">コード。</param> /// <returns>変換された文字列。</returns> protected string C…

System.Collections.Generic.HashSetクラスを使ってみた

System.Collections.Generic.HashSetクラスを使ってみました。 HashSet(T) クラス (System.Collections.Generic)値のセットを表します。 HashSet コレクション型簡単に言えば、HashSet クラスは値のない Dictionary コレクションと考えることができます。 ..…

System.IO.Path.Combineメソッドはドライブレター直後にセパレータを付加しない

System.IO.Path.Combineメソッドはドライブレター直後にセパレータを付加しません。 Path.Combine メソッド (System.IO)複数の文字列を 1 つのパスに結合します。 ... つまり、次のコードは、 System.IO.Path.Combine(@"c:", "hoge"); 以下を返します。 c:ho…

checkedキーワードとuncheckedキーワード

C#でcheckedキーワードとuncheckedキーワードというものを知りました。 checkedキーワード、uncheckedキーワードとは? MSDNから引用します。 checked (C#)checked キーワードは、整数型の算術演算および変換に対してオーバーフロー チェックを明示的に有効…

LINQプロバイダまとめ

LINQプロバイダをまとめてみました。いろいろありますね。Linq To OracleThe Linq To Oracle project provides a custom query provider for Oracle databases. ...LINQ to Active DirectoryLINQ to Active Directory implements a custom LINQ query provid…

WPFで背景が透明なウィンドウを作成する

WPFで背景が透明なウィンドウを作成する方法を紹介します。 App.xaml <Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Class="Lancher.App" StartupUri="MainWindow.xaml"> <Application.Resources> </Application.Resources> </Application> MainWindow.…

IEnumerable.GroupJoinメソッド

Enumerable.GroupJoin(TOuter, TInner, TKey, TResult) メソッド (IEnumerable(TOuter), IEnumerable(TInner), Func(TOuter, TKey), Func(TInner, TKey), Func(TOuter, IEnumerable(TInner), TResult)) (System.Linq)キーが等しいかどうかに基づいて 2 つの…

IEnumerable.SelectManyメソッド

Enumerable.SelectMany(TSource, TResult) メソッド (IEnumerable(TSource), Func(TSource, IEnumerable(TResult))) (System.Linq)シーケンスの各要素を IEnumerable に射影し、結果のシーケンスを 1 つのシーケンスに平坦化します。 ソースコード using Sys…

ビルド時に「"Exec" タスクには実行するためのコマンドが必要です。」のエラーが発生する

ビルド時に「"Exec" タスクには実行するためのコマンドが必要です。」のエラーが発生しました。 原因 ビルドイベントの[ビルド前/後に実行するコマンドライン]に改行だけが入力されていると、コマンドを実行しようとして何もコマンドがないためにエラーにな…