【.NET】.NET Framework ソースコード。

  • 2009.03.29 Sunday
  • 23:19
開発環境を新調してしまったため、ちょっと問題が発生中です。以前は、「呼び出し履歴」の.NET Framework部分をダブルクリックするとタイムラグもなく.NET Frameworkのソースコードにステップインできていたのですが・・・それをどうやって実現したのかわからなくなってしまいました・・・あいたたた。

う〜ん。

-----------------------------------------
Shared Source Initiative
http://www.microsoft.com/resources/sharedsource/default.mspx

なにげにサイトのデザインがかっこよくなってるんですが!!!

【.NET】DataSet, DataTable, DataRowでやっちゃう間違え?いや正しい?

  • 2009.03.11 Wednesday
  • 00:48
static void Main(string[] args)
{
 var table = new DataTable();
 table.Columns.Add(new DataColumn("Column", typeof (int)));

 table.Rows.Add(new object[] {10});
 table.AcceptChanges();

 Console.WriteLine(table.Rows[0][0] == table.Rows[0][0, DataRowVersion.Original]);
}

上記のプログラムの実行結果は

False

が出力されます。DataColumnで指定した型が値型の場合で、実際には

table.Rows.Add(new object[] {10});

でわかるようにボックス化しているため、objectどうして == 演算しているためにこのような結果が帰ってくるのだと思います。

DataRowに包含されているobject[]の配列の要素が参照の場合は、また結果は変わります。

static void Main(string[] args)
{
 var table = new DataTable();
 table.Columns.Add(new DataColumn("Column", typeof (object)));

 table.Rows.Add(new object[] {10});
 table.AcceptChanges();

 Console.WriteLine(table.Rows[0][0] == table.Rows[0][0, DataRowVersion.Original]);
}

typeof(int)がtypeof(object)に変わっただけですが、見た以上にかなり違います。この結果は

True

です。同じ、参照を持っているのでTrueです。ものすごくわかりにくいです。

最初のコードを書いてしまう場面は、たとえば、DataRowStateがModifiedになっている場合など、オリジナルとカレントが行単位では変更があったことがわかりますが、では実際にどこが変わったのかチェックしようとして、DataColumn毎にforeachで回してしまった場合に起こります。

まあ、Equalsで見れば良いだけのなんでしょうが、こういうコードを書いてもすぐには気づかず、数日後、数週間後、数ヶ月後、数年後に気づくわけです。はい。なかなか気づかないです。そこが問題なのですね!


そもそも、こういう直感的にわかりにくいたぐいのものは私はとっても苦手なので、これを書いていてもどうも、自信がありません。Equalsで本当に良いの?っておもっちゃいます。難しいですね。



↓なんて、変更はあったのに変更はないですよ!DataRow的には変更があったって言ってるんだけど・・・。

static void Main(string[] args)
{
 var table = new DataTable();
 table.Columns.Add(new DataColumn("Column", typeof (object)));

 table.Rows.Add(new object[] {10});
 table.AcceptChanges();

 table.Rows[0][0] = 10;

 Console.WriteLine(table.Rows[0].RowState);
 Console.WriteLine(table.Rows[0][0] == table.Rows[0][0, DataRowVersion.Original]);
}



まあ、目的に応じてObject.ReferenceEquals()とObject.Equals()をきちんと呼び出しなさいって事なんですかねー。ええ。えええええええ。

【Book】C# Design and Development Expert One on One

  • 2009.02.13 Friday
  • 03:45
C# Design and Development Expert One on One (Expert One on One)
C# Design and Development Expert One on One (Expert One on One)
John Paul Mueller



日本語訳でないかしら〜

【WPF】INotifyPropertyChangedを実装した抽象クラスを継承するクラスじゃなくて

  • 2009.02.07 Saturday
  • 01:59
INotifyPropertyChangedを継承する抽象クラスにPropertyChangedイベントを発砲するクラスを公開しているサンプルコードのどこかにこっそり入れたことが2、3度ありましたが、どうも抽象クラスを継承することに抵抗を感じて、EventManagerの仕組みなどを調べて、それからCommandの仕組みを調べて、それかCollectionViewを調べて、どこかのタイミングDispatcherObjectをかじろうとして挫折して、結局のところ答えが見つかっていません。

そろそろ仕切り直しをかねて集めた情報を見直して行こうと思います。

【Book】Expressions Tree にどっぷり触れている本を探してます。

  • 2009.02.07 Saturday
  • 00:33
今週、会社の昼休みはネットで「Expressions Tree」に触れている本を探す事に徹していました。一週間探し続けたのですが、さすがに本の内容を立ち読みしている訳ではないので、見つけるのが難しいです。googleさんのBookサーチもなかなか良いのですが・・・なんか重くて・・・・う〜んです。何か良いの無いのかしら・・・って思っているとVS2010が出てまた仕様がかわったり・・・。

【.NET】Microsoft製のソースを読もう。

  • 2009.01.03 Saturday
  • 17:33
MSDNライブラリーには.NET Frameworkライブラリー中のクラスなどの説明がされていますが、
実際のコードはどうなっているんだろうって思うことありますよね。
Reflectorなどを使えばdllからC#などのコードに生成してくれますが、
去年、一昨年(でしたっけ?).NET Frameworkライブラリーが一般に公開されたので
実際に記述されているコードが閲覧可能な状態になっています。
また、デバッグ中に.NET Frameworkライブラリーに
ステップインすることもできるようになっています。

と言うことは、おそらく以前に書いたような気がするのですが、
今回は素早くコードを見る方法を紹介したいと思うます。
(とっても泥臭いです)

まず、下記のサイトから

http://referencesource.microsoft.com/netframework.aspx


下記の3つのファイルをダウンロードします。

NET 8.0
FX1434 1.0
dotnetfx35SP1_3053

NET Framework


それからこの3つのインストーラをたたいて、これらをインストールします。
インストールと言ってもファイルが展開されているだけのようですが・・・
(私の場合は「I:¥RefSrc」にファイルをすべてインストールしました。)

これで終わりです。後は、調べたいクラスのファイルを検索するだけで
そのファイルを見つける事ができると思います。

たとえば、「PropertyChangedEventManager」というクラスを調べたい場合は
PropertyChangedEventManagerをキーワードにしてエックスプローラで検索をかけると

.NET Framework

私が使用している環境では一瞬で検索結果が帰ってきます。

最後に見つかったPropertyChangedEventManager.csをメモ帳などで開けば
PropertyChangedEventManagerクラスの内容が閲覧できるわけです。
この方法の利点はサマリードキュメント以外のコメントも簡単に閲覧できることです。
おそらくサマリードキュメントはMSDNに記載されている内容だと思うのですが(確認していません)
コード中に記載されている内容は実際のコードを見ない限り閲覧することは不可能です。
このコメントが読めるだけでも価値があると思います。

では、まとめます。

1..NET Frameworkクラスライブラリー中のコードの一部が公開されている。
2.下記のサイトにコードファイルがまとまった状態で公開されている。
  http://referencesource.microsoft.com/netframework.aspx
3.公開されているコードのコメントまで閲覧可能である。
4.クラス名でファイルを検索すると素早く発見できる。


以上

【.NET】こういう本を待っていました。

  • 2008.12.28 Sunday
  • 16:57
The Root of .NET Framework
The Root of .NET Framework
荒井 省三

-----------------
レビューではなく単なる日記です。

実家に帰る途中で買いました。夜行バスで帰ったので、荷物になるとわかりつつも早く手元に置きたかったので・・・でも、夜行バスは暗かったので読めませんでしたけど・・・。

そうそう。私が買った本屋さんはなぜかこの本がWindowsServer系の棚の列に飾られていました・・・おかげで探すのが大変でした。ええ。新宿のブックファーストです。あのブックファーストはコンピュータ系の陳列がちょっとわかってなさすぎです。

【Book】気になる本「The Root of .NET Framework」

  • 2008.12.09 Tuesday
  • 06:01
The Root of .NET Framework
荒井 省三

かなり気になります。

【Tools】ReSharper4.1を使っているつもりだったのに...

  • 2008.12.07 Sunday
  • 12:13
ReSharper4.1を使っているつもりだったのですが
実はReSharper4.0を使ってました・・・。
SilverlightでXAMLを記述するとCollection周りでレッドになってしまうので
おかしいなぁ〜なんて思っていたのですが・・・。

まさか4.0だったとは。。。

きっとダウンロードするだけでインストールし忘れたんだとおもいますが
もしかするとInstall中にAbortボタンを押したのかも・・・

まあどっちにしてもアホですね。


アホだったあの頃の...

Resherper4.0


現在...

Resherper4.1


ああ、アホなのはもちろん私です。ええ。

【.NET】Patterns & Practices Pocket Guides

  • 2008.12.04 Thursday
  • 03:48
Patterns & Practices Pocket Guides

Ok, now you “can” print it ( meaning you can always save a tree and NOT print it :) )

http://blogs.microsoft.co.il/blogs/adlaim/archive/2008/11/25/patterns-amp-practices-pocket-guides.aspx


ポケットガイド出たー!


Rich Client Architecture Pocket Guide.pdf
http://www.codeplex.com/AppArch/Release/ProjectReleases.aspx?ReleaseId=19800

RIA Architecture Pocket Guide
http://www.codeplex.com/AppArch/Release/ProjectReleases.aspx?ReleaseId=19799

Web Architecture Pocket Guide
http://www.codeplex.com/AppArch/Release/ProjectReleases.aspx?ReleaseId=19802

Service Architecture Pocket Guide
http://www.codeplex.com/AppArch/Release/ProjectReleases.aspx?ReleaseId=19801

Mobile Architecture Pocket Guide
http://www.codeplex.com/AppArch/Release/ProjectReleases.aspx?ReleaseId=19798

calendar

S M T W T F S
1234567
891011121314
15161718192021
22232425262728
2930     
<< September 2019 >>

あわせて読みたい

あわせて読みたいブログパーツ

selected entries

categories

archives

recent comment

  • 【キーボード】6年前のRealForceを復活させることはできる!?その3
    art55 (05/22)
  • 【キーボード】6年前のRealForceを復活させることはできる!?その3
    分解大好き (05/18)
  • 【.NET Framework 4.5】 IListがIReadOnlyListを継承してない理由。
    art55 (02/04)
  • 【.NET Framework 4.5】 IListがIReadOnlyListを継承してない理由。
    Gen (02/04)
  • 【キーボード】RealForce が壊れて帰ってきた。
    art55 (04/29)
  • 【.NET Framework 4.5】 IListがIReadOnlyListを継承してない理由。
    art55 (02/23)
  • 【.NET Framework 4.5】 IListがIReadOnlyListを継承してない理由。
    かるあ (02/22)
  • 【C#】Dictionaryの実装・データ構造・アルゴリズムを観察する。
    art55 (01/16)
  • 【C#】Dictionaryの実装・データ構造・アルゴリズムを観察する。
    karuakun (01/16)
  • 【NetOffice】【Excel】死なないExcelプロセスをKillする。
    art55 (12/05)

recent trackback

recommend

recommend

recommend

C#プログラマのための.NETアプリケーション最適化技法 (Programmer's SELECTION)
C#プログラマのための.NETアプリケーション最適化技法 (Programmer's SELECTION) (JUGEMレビュー »)
Sasha Goldshtein,Dima Zurbalev,Ido Flatow,サシャ・ゴルドシュタイン,ディマ・ズルバレフ,イド・フラトー

recommend

ろんりと集合
ろんりと集合 (JUGEMレビュー »)
中内 伸光
とてもわかりやすいです。

recommend

recommend

シャノン・ノイマン・ディジタル世界
シャノン・ノイマン・ディジタル世界 (JUGEMレビュー »)
市川 忠男
4章がリレーショナルデータベースな内容になってます。ページ数があまりありませんが、ポイントがものすごく的確にまとまっていて、感動します。

recommend

recommend

東プレ Realforce91UBK-S 静音キーボード 静電容量無接点方式 変荷重 ブラック NG01BS
東プレ Realforce91UBK-S 静音キーボード 静電容量無接点方式 変荷重 ブラック NG01BS (JUGEMレビュー »)

テンキーレス、静音のRealForce91UBK-S。スコスコ感がたまらなく気持ちいいです。家と会社で2台持ってます。

recommend

recommend

プログラミング.NET Framework 第4版 (プログラミングシリーズ)
プログラミング.NET Framework 第4版 (プログラミングシリーズ) (JUGEMレビュー »)
Jeffrey Richter
発売予定美 2013年10月10日。.NET Frameworkとお付き合いする人のバイブルですね。

recommend

recommend

キャット・シッターの君に。
キャット・シッターの君に。 (JUGEMレビュー »)
喜多嶋 隆
私のイラストレータデビュー本です。

recommend

Essential .NET ― 共通言語ランタイムの本質
Essential .NET ― 共通言語ランタイムの本質 (JUGEMレビュー »)
ドン・ボックス,クリス・セルズ,Don Box,Chris Sells,吉松 史彰

links

profile

search this site.

others

mobile

qrcode

powered

無料ブログ作成サービス JUGEM