.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
ただし、リンクが存在しないドキュメントも多いので、その場合は以降の方法で探します。
と言うか、元々ソースコードへのリンクとか無くて、気が付いたら増えてました。
頑張って整備してる説あります。
GitHubの検索機能を使う
GitHubのディレクトリ構造が複雑なので、リンクをポチポチで辿るのは無理ゲー。なので、検索機能で探します。
検索する単語はクラス名とか名前空間を繋いだ正式名称とか、この辺を入力すると候補がでます。
たぶん、相当な数の候補が出ると思いますが、ここから目的と思われるクラスを探します。
例として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より探しやすいです。
もしくはSystem.Private.CoreLibから名前空間で探せます。
https://source.dot.net/#System.Private.CoreLib,namespaces
名前空間からポチポチで探すのが1番楽だよ。
.NET Frameworkのソースコードを参考にする
.NET Frameworkのソースコードも公開されてます。
こちらは旧モデルですが、参考にするって意味なら役に立つと思います。
https://referencesource.microsoft.com/
探し方は同じなので説明はカットします。
あとがき
GitHubからソースコードを落とすと、なんと約800MBあります。
もちろん全部がプログラムではないと思いますが、Libraryで800MBってやばい。
◆ C#に関する学習コンテンツ
この記事は参考になりましたか?
コメント