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

関数を別な変数に移して呼び出す

たまにこういうのが必要になる。 関数のオブジェクトをいったん別の変数に移し、元のオブジェクトを空にしてから、移した先の関数を呼び出す。 これが必要になるのは、コールバック関数を呼び出し、そのコールバック関数のなかでさらにコールバック関数が登…

MessagePack for C#でシリアライズしたデータをバイト配列に変換

C#

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using SUtils.Serialization; using SUtils.Serialization.MsgPack; namespace CsCosnole { class Data { public int value; public string str; …

MessagePack for C#でクラスのリストをシリアライズ

C#

クラスは一旦IEnumerableに変換する必要がある。 それのリストをシリアライズするには、IEnumerable>ではダメなので、IEnumerableをSerializableValueに変換して、最終的にIEnumerableにしないといけない。 using System; using System.Collections.Generic;…

InnerException

C#

C++0x の nested_exception を理解するため、 C# の InnerException を復習中。 C# でのネストした例外の指定方法は以下のようになる using System; namespace Program { class Program { static void Main(string[] args) { try { throw new Exception("Err…

C# 4.0でダックタイピング

C#

using System; namespace Program { class Foo { public void DoSomething() { Console.WriteLine("Foo"); } } class Bar { public void DoSomething() { Console.WriteLine("Bar"); } } class Program { static void Main(string[] args) { Duck(new Foo())…

ラムダ式で再帰

C#

こうかな、と using System; namespace CsConsole3 { class Program { static void Main(string[] args) { Func<int, int> fact = null; fact = x => x == 0 ? 1 : x * fact(x - 1); Console.WriteLine(fact(3)); // 6 } } } おー、動いたー</int,>

Extension Method - IDictionary

C#

using System; using System.Collections.Generic; namespace Shand.Extension { public static partial class Extensions { public static void ForEach<Key, Value>(this IDictionary<Key, Value> source, Action<Key, Value> action) { foreach (var item in source) { action(item.Key, item.</key,></key,></key,>…

LINQ to HogeHoge

C#

クエリ演算子に相当する拡張メソッドを用意すれば、クエリ式の動作をユーザー定義にすることができる 以下はその例 クエリ演算子 where, select に相当する拡張メソッド Where, Select を用意する using System; using System.Collections.Generic; namespac…

Extension Method - IEnumerable

C#

using System; using System.Linq; using System.Collections.Generic; namespace Shand.Extension { public static partial class Extensions { public static bool IsEmpty<T>(this IEnumerable<T> source) { return source.Count() == 0; } public static void </t></t>…

Extension Method - Int

C#

using System; using System.Linq; using System.Collections.Generic; namespace Shand.Extension { public static partial class Extensions { public static IEnumerable<int> To(this int from, int to) { return Enumerable.Range(from, to); } public stati</int>…

Extension Method - String

C#

using System.Text.RegularExpressions; namespace Shand.Extension { public static partial class Extensions { public static bool IsNullOrEmpty(this string str) { return string.IsNullOrEmpty(str); } public static bool IsRegexMatch(this string …

Extension List.Map

C#

C# でこういうことできないんだっけ? using System; using System.Collections.Generic; using System.Linq; namespace CsConsole3 { class Program { static void Main(string[] args) { List<int> ls = new List<int>() {3, 1, 4}; ls.ForEach(x => ++x); // 全要素</int></int>…

KanaConverter

C#

Visual Studio International Pack 1.0 のJapanese Kana Conversion Library(日本語かな変換ライブラリ)を使ってみました using System; using Microsoft.International.Converters; namespace CsConsole3 { class Program { static void Main(string[] args…

YomiAutoCompletionListener

C#

Visual Studio International Pack 1.0 の Japanese Yomi Auto-Completion Library(日本語読みがなオートコンプリートライブラリ)を使ってみました このライブラリにある Microsoft.International.Windows.YomiAutoCompletionListener は テキストボックス等…

EastAsiaNumericFormatter

C#

Visual Studio International Pack 1.0 の East Asia Numeric Formatting Library(東アジアのための数値フォーマットライブラリ)を使ってみました 以下は整数を漢数字文字列に変換するサンプル using System; using Microsoft.International.Formatters; nam…

コレクションの結合(Join)

C#

以前C++で作ったjoinをC#で作ってみました複数のコレクションを結合して、一度のループで全てを走査します 使い方 List<int> ar = new List<int>{3, 1, 4}; LinkedList<int> lar = new LinkedList<int>(); lar.AddLast(2); lar.AddLast(5); lar.AddLast(6); foreach (int value i</int></int></int></int>…

varの乱用撲滅推進宣言

C#

ローカル変数を(抽象をのぞいた)全部に対してvarを書くという愚行は・許容しない・美しくない・彼らの主張するメリットが私にとってのメリットにはなりえない 以下、var推進側の主張の一部・var i = 0;と書いてもいいじゃないか。int i = 0;と書いたのと同じ…

C#でCRTP

C#

これをCRTPと呼んでいいのかわからないけどCuriously Recurring Template in C#? No way... using System; using System.Collections.Generic; using System.Text; namespace Program { interface IF { void Foo(); } class Base<T> where T:class, IF { public</t>…

ASP.NETでメッセージボックス

C#

ASP.NET MessageBox これはなかなか便利だ using System; using Microsoft.VisualBasic; using System.Text; using System.Collections; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace WebMessageBox { public class …

AccessにLINQ

C#

LINQ to SQLはAccessのデータベース(*.mdb, *.accdb)には対応しないらしい

.NETメール

C#

C# 2.0でメール配信するプログラムを組んでいたのだが 環境によって文字化けすることがあった文字コードがUnicode(UTF-8)のメールを正しく読めるメーラーは まだ普及していないのかな 文字化け問題を解消するために、日本のメールで標準使用されている 文字…

C# 3.0 - 続・自動プロパティ

C#

自動プロパティでも各アクセッサにアクセス識別子を設定することができる public class Person { public string Name { get; private set; } public int Age { get; private set; } public Person(string name, int age) { // private set Name = name; Age …

C# 3.0 - タプル

C#

C# 3.0の概要 匿名型。これは、オブジェクト初期化子から自動的に推論され作成されるタプル型です。 言われてみれば、たしかにタプルだ var person = new { Name="Akira", Age=22 }; person.Name = "Sol"; person.Age = 5000; var person = new { Name = "Ak…

はてなダイアリーのRSSを読み込む

C#

うちのブログのRSSがなぜかC#(WPFのバインディング等のノード選択)で処理できない調べたら、はてなのRSSにデフォルト名前空間が使われているせいだった 「XPathではデフォルト名前空間は処理できません」 だそうです つまり これならOKだけど <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <channel> <title>Faith and</title></channel></rdf:rdf>…

WPFで遊んでます

C#

Expression Blendむずいです まだ日本ではExpression Blendの本って出てないんですね (『XAMLプログラミング』にちらっと載ってますが) ネットでもTips集やサンプル扱ってるとこが少ないのでなかなかタイヘンです

LINQ to SQL メモ

C#

LINQ to SQLを使用する (パート1) LINQ to SQL (パート2 - データモデルクラスの定義) LINQ to SQL (パート 3 - データベースの検索) LINQ to SQL (パート 4 - データベースの更新) LINQ to SQL (パート 5 - ASP:LinqDataSourceコントロールを使用してUIをバ…

C# 3.0は強力だー

C#

今まで(C# 2.0) List<int> ar = new List<int>(); ar.Add(3); ar.Add(1); ar.Add(4); foreach (int item in ar) { Console.WriteLine(item); } これから(C# 3.0) List<int> ar = new List<int> { 3, 1, 4 }; ar.ForEach(Console.WriteLine); 2行になっちゃったよ・・・・ メッセ</int></int></int></int>…

C# 3.0 - LINQ to Objects 複数フィールド抽出

C#

複数フィールドを取得する場合は、selectに匿名型を指定します using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Program { class Program { static void Main(string[] args) { var persons = new[] { ne…

C# 3.0 - LINQ to Objects

C#

言語統合クエリ 最も大きな拡張 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Program { class Program { static void Main(string[] args) { var persons = new[] { new { Age = 22, Name = "Akira" …

C# 3.0 - ラムダ式

C#

賛否両論なラムダ式 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Program { class Person { public int Age { get; set; } public string Name { get; set; } } class Program { static void Main(st…

C# 3.0 - 拡張メソッド

C#

C# 3.0で唯一いらないもの既存のクラスにメソッドを追加できる using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Program { // intにHogeメソッドを追加 public static class IntExtention { public stati…

C# 3.0 - 匿名型配列

C#

using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Program { class Program { static void Main(string[] args) { var persons = new[] { new { Age = 22, Name = "Akira" }, new { Age = 38, Name = "Bob…

C# 3.0 - 匿名型

C#

指定したプロパティを持つクラスを匿名で作成する using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Program { class Program { static void Main(string[] args) { var person = new { Age = 22, Name = …

C# 3.0 - 暗黙に型付けられた型(var)

C#

型推論によってコンパイル時に決定される型 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Program { class Program { static void Main(string[] args) { var n = 3; int value = n; var ar = new List<int></int>…

C# 3.0 - オブジェクト初期化子

C#

プロパティを指定した初期化ができる using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Program { class Hoge { public int Age { get; set; } public string Name { get; set; } public void Disp() { Co…

C# 3.0 - 自動プロパティ

C#

流行りに乗ってたまにはC#でもやりましょう プロパティが簡単に書けるようになる using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Program { class Hoge { public int Age { get; set; } public string N…