2008年08月25日

TechED 2008

   このエントリーをはてなブックマークに追加 Clip to Evernote
明日から Tech ED 2008 Yokohama が始まりますね。
僕は、27日と28日の2日間、参加予定です。
本当は、26日と29日に聞きたいセッションがあったのですが、
仕事の関係で、それ以外の日になってしまいました。

メルマガにも書きましたが、参加証のカードの余白に"Gushwell"と書いておきますので、もし、気が付かれた方は、声をかけてください。メルマガや当ブログの感想などをお聞かせいただけると嬉しいです。


ところで、今月は我が家にXboxが来たので、久しぶりにゲームで遊んでいます。
RPGやるのは何年ぶりだろう。結構はまりますね。

ロスト オデッセイ
  

Posted by gushwell at 21:38Comments(0)TrackBack(0)

拡張メソッドのドットの位置

   このエントリーをはてなブックマークに追加 Clip to Evernote
前回の続き

C#の拡張メソッドのドットの位置で、僕がなぜ前置き派なのかは、見た目うんぬんよりも、Visual Studio 2008のインテリセンスを有効に利用できることが最大の理由かな。
ドットを打って、改行してしまうと、Ctrl + Space を押さないと一覧が表示されないので、コーディングのリズムが狂うというか、うまく乗ることができない。
前置きならば、ドットをタイプした時点で、メソッド一覧が表示されるので、リズムよくコードをタイプして行けるから。
  
Posted by gushwell at 21:25Comments(2)TrackBack(0)

2008年08月22日

LINQ の拡張メソッド形式のスタイル

   このエントリーをはてなブックマークに追加 Clip to Evernote
LINQ の拡張メソッド形式のスタイルは、
var query = names 
            .Where(s => s.Length >= 5) 
            .Select(s => s.Trim());

のように、ドットを前に置き、ドットの位置を揃えるというスタイルが 一般的なのかと思っていたけど、どうなんだろう?

http://www.microsoft.com/japan/msdn/net/bb308959.aspx
は、前に置くスタイル。

http://www.microsoft.com/japan/msdn/net/bb394939.aspx
は後ろに置くスタイルだ。
MSの中でも統一されていないようだ。 どっちでも良いんじゃないって言われればそうなんだけど...  
Posted by gushwell at 20:43Comments(2)TrackBack(0)

2008年08月20日

Visual C# 2008 Express Edition with Service Pack 1

   このエントリーをはてなブックマークに追加 Clip to Evernote
Visual C# 2008 Express Edition with Service Pack 1 をインストールしてみた。


以前のVisual Studio 2008 Express Editionをいったんアンインストール後、
再度インストールする必要がある。

ただ、インストールの最後のステップの「SQL Server 2008 Express Edition のインストール」でエラーになってしまった。

そのせいなのか、デスクトップに、「Microsoft Visual C# 2008 Express Edition with SP1 のインストール」というショートカットが出来ている。

本体は、正常にインストールされているので、SQL Server 2008 Express Editionを使わなければ、問題なく使えている。



このエラーって、僕だけかな。
  
Posted by gushwell at 21:28Comments(0)TrackBack(0)

2008年08月16日

Visual Studio 2008の単体テスト

   このエントリーをはてなブックマークに追加 Clip to Evernote
Visual Studio 2008の単体テスト機能を使っていると、時々、単体テストが起動できなくなる場合がある。
また、単体テストが起動できても、コードカバレッジの結果が表示できない症状になることもある。

こんな時には、Visual Studio 2008を再起動しただけでは現象が回避できず、PCを再起動しないとダメみたい。

ただ、経験上、VsPerfMon.exeというプロセスをタスクマネージャから終了させると、
うまく、単体テストが起動できるようになる(と思う)...。

  
Posted by gushwell at 16:58Comments(0)TrackBack(0)

2008年08月06日

IEnumerator<T>は、IDisposableを実装してる(2)

   このエントリーをはてなブックマークに追加 Clip to Evernote
NyaRuRuさんの記事「IEnumerator を実装していれば必ず IDisposable である理由」を読んだ僕なりの理解。

IEnumeratorの骨格はとこんな感じです。(かなりいいかげん)

    class EnumeratorSample<T> : IEnumerator<T> {
public int Current {
get { ... }
}

public bool MoveNext() {
...
}

public void Reset() {
...
}
}

# 僕はこのクラスを実装したことは無いですが...

もし、このクラス内で解放すべきリソースを保持しているとすると、正常系では、MoveNext内で最後まで列挙が終わったことを確認した時にリソースを解放する必要があるわけですね。
でも、それだけだと完全ではないです。
途中で列挙を終えてしまった場合は、リソースを解放するタイミングがありません。
これでは困ります。
そのため、IEnumerator は、IDisposableを実装することとして、foreachで途中でbreakされた場合などでも、Disposeメソッドが呼ばれる実装にしているということだと思います。

そういう意味では、非ジェネリックなIEnumeratorでも、同じことなので、IDisposableが実装されていれば、Disposeを呼ぶようにしないといけませんね。  
Posted by gushwell at 21:26Comments(4)TrackBack(0)

2008年08月05日

IEnumerator<T>は、IDisposableを実装してる

   このエントリーをはてなブックマークに追加 Clip to Evernote
今までは、C#でGetEnumerator()を使うときって、

var enumerator = list.GetEnumerator();
while (enumerator.MoveNext()) {
var obj = enumerator.Current;
...
}

て書いてたけど、GetEnumerator()の戻り値であるIEnumerator<T>は、IDisposableを実装してるから、本来は、

using (var enumerator = list.GetEnumerator()) {
while (enumerator.MoveNext()) {
var obj = enumerator.Current;
...
}
}

て usingを書かなくちゃいけないんですね。
今までほとんど意識してませんでした。

えっ、foreach使えばGetEnumeratorは使わないって?
でも、ときどき、GetEnumeratorが必要になるときがあるんです。

  
Posted by gushwell at 22:55Comments(2)TrackBack(0)

2008年08月01日

OfType演算子

   このエントリーをはてなブックマークに追加 Clip to Evernote
前回の記事の

var buttons = this.Controls.Cast<Control>().Where(ctrl => ctrl is Button);

は、OfType演算子を使えば、

var buttons = this.Controls.Cast<Control>().OfType<Button>();

でOKでした。これで指定した型のオブジェクトだけを抜き出してくれます。

--------------
8/4追記

さらに短くできました。

var buttons = this.Controls.OfType<Button>();


と、OfTypeだけで良いんですね。




  
Posted by gushwell at 21:42Comments(4)TrackBack(0)