.NETの内部実装(ソースコード)を調べる方法

[C#] .NETの内部実装(ソースコード)を調べる方法

※ 当サイトは広告を含みます。

.NETのソースコードを見れたら設計の参考にできるのに... とか思ったことありませんか?
その願い叶いますよ。と言うか、.NETからOSS(オープンソース)になったのでGitHubで普通に公開されてます。

管理人

Microsoft様ありがとう。.NETって最強資産をオープンソースで公開って英断だと思う。

りさ

公開するメリットってあるんでしょうか?

管理人

一般的には、オープンソース化にしてみんなで盛り上げたほうが、もっと良くなるんじゃね? って思想がある(適当)。

ソースコードの公開場所

結論を言うと、ここに全部あります。
https://github.com/dotnet

そして、C#から利用されるLibrary部分はこっち(たぶん)。
https://github.com/dotnet/runtime

目的のソースコードを探す方法

公式ドキュメントを見る

1番簡単な方法です。公式ドキュメントに記載されてるリンクから移動します。
例えば、これはList<T>型のドキュメントですが、ここに.csへのリンクがあります。
https://learn.microsoft.com/en-us/dotnet/api/system.collections.generic.list-1

learn.microsoft.comで検索する

ただし、リンクが存在しないドキュメントも多いので、その場合は以降の方法で探します。
と言うか、元々ソースコードへのリンクとか無くて、気が付いたら増えてました。

管理人

頑張って整備してる説あります。

GitHubの検索機能を使う

GitHubのディレクトリ構造が複雑なので、リンクをポチポチで辿るのは無理ゲー。なので、検索機能で探します。
検索する単語はクラス名とか名前空間を繋いだ正式名称とか、この辺を入力すると候補がでます。

github.comで検索する

たぶん、相当な数の候補が出ると思いますが、ここから目的と思われるクラスを探します。
例としてSystem.IO.FileStreamなら、以下が該当するソースコードだと思います。
https://github.com/dotnet/runtime/blob/main/src/libraries/System.Private.CoreLib/src/System/IO/FileStream.cs

後は、この辺がLibraryのトップ(?)なので、ここから名前空間を参考にポチポチするとか。
https://github.com/dotnet/runtime/tree/main/src/libraries/System.Private.CoreLib/src

.NET Source Browserを利用する

本家で探すのが辛い場合は.NET Source Browserと呼ばれるサービスを利用します。
https://source.dot.net/

左に検索窓があるので、そこにクラス名とか名前空間を入力します。
こちらもいくつか候補が出ますが、詳細も表示されるのでGitHubより探しやすいです。

source.dot.netで検索する

もしくはSystem.Private.CoreLibから名前空間で探せます。
https://source.dot.net/#System.Private.CoreLib,namespaces

source.dot.netで検索する
管理人

名前空間からポチポチで探すのが1番楽だよ。

.NET Frameworkのソースコードを参考にする

.NET Frameworkのソースコードも公開されてます。
こちらは旧モデルですが、参考にするって意味なら役に立つと思います。
https://referencesource.microsoft.com/

管理人

探し方は同じなので説明はカットします。

あとがき

GitHubからソースコードを落とすと、なんと約800MBあります。
もちろん全部がプログラムではないと思いますが、Libraryで800MBってやばい。

◆ C#に関する学習コンテンツ

この記事は参考になりましたか?

関連記事

コメント

この記事へのコメントはありません。