.NETフレームワークに関しては新鮮ではなく、私は数年間それを利用するC#ソフトウェアを作成してきました。しかし、先日、私には思ったことがありました.C#は、lock
とobject
のようなキーワードを使って.NETフレームワークからどのように分離されていますか? object derp = new object();
のようなステートメントはSystem.Object derp = new System.Object();
に解決されますが、System.Objectは.NETの一部として定義されていますか? mscorlibで定義されていても、言語機能はライブラリに依存しています。 Monitor.Enter()
とMontior.Exit()
への呼び出しを解決するlock
ステートメントについても同様です。明らかに、.NET機能を使用しないで、非おもちゃ以外のプログラムを書くのは愚か/不可能ですが、その言語では大部分はと書かれたライブラリに依存しますか??C#と.NET Frameworkの違いは?
答えて
言語を実装するための最低限の要件は、言語を実行可能コードに変換するコンパイラとそれを実行する実行時システムを持つことです。どちらもC#で書かれていませんでしたが、C++を使用していました。これを達成するために別の言語を使用することは、伝統的で必要なブートストラップのステップです。 C言語は、ブートストラップ言語の非常に一般的な選択肢です。モノラル化された手法は、小さく、移植が非常に簡単です。 C自体がブートストラップ言語を持っていました。それはBでした。これはBCPLからブートストラップされました。 CPLからブートストラップされたものAtlas2からブートストラップされました。その前に暗くなる、非常に原始的なコンピュータのフロントパネルのトグルスイッチを使用している人を想像してみてください。
これが完了すると、反復処理と改善を開始できます。 lock
キーワードのサポートを追加するのと同様に、言語機能を使用すると、コンパイラとランタイムシステムが必要なくなります。これはMonitorクラスに依存していますが、C++でのコードの大部分は今日でも非常に薄いです。
コンパイラをターゲット言語に書き換えるのは、しばしば、C#ではかなり時間がかかりましたが、今はRoslynでやりました。ランタイムシステムの書き換えは考慮されるかもしれませんが、これはあまり一般的ではありません。ミドリの秘密プロジェクトであるマイクロソフト内のインキュベーションプロジェクトを完了しました。ランタイムだけでなく、オペレーティングシステム全体。 Singularityプロジェクトを立ち上げました。
私たちがチェーンを続けるとどこに達するのですか?なぜあなたは 'Atlas2'で止めたのですか?それは興味深い連鎖でした。 – user3185569
Atlas2はコンピュータ設計で、Atlasをブートストラップして、Titanをブートストラップしていましたが、言語とランタイムの区別があいまいです。それをプログラムするための専用言語を持つコンピュータは、昔からよく使われていました。 Think Eniacは、ケーブルを差し込んで「プログラム」されています。 –
非常に興味深い歴史のレッスン@ハンス、私はいつも他の言語を作成するためにどの言語が使われているのか疑問に思ってきました。しかし、私はこれが私の質問に答えるかどうか分からない。 MonitorクラスはもともとC++で書かれていて、MicrosoftのC#コンパイラはMonitorの関数への適切な呼び出しでロック構造の使用を置き換えると言っているようです。だから.netはC#を必要としませんでしたが、私が求めているのは、なぜ言語機能は既存のライブラリに依存しているのでしょうか? – Rabadash8820
- 1. .NET Coreと.NET Frameworkの違いは何ですか?
- 2. .NET Framework 4.6.1 Targeting Packと.NET Framework 4.6.1 Runtimeの違いは何ですか?
- 3. Expression.Subtract .NET Frameworkと.NET Framework間のDateTimeの相違
- 4. asp.net c#.net framework 2.0と3.5
- 5. Foundation FrameworkとCore Foundation Frameworkの違いは?
- 6. C#のバージョンと.NET Frameworkのバージョン?
- 7. .NET FrameworkなしのC#
- 8. JavaとC#と.NETの相違点
- 9. コンソールの静的IOメソッドとConsole.In/Out/ErrorのIOメソッドの違いと関係C#と.NET Frameworkの
- 10. .NET doubleとpython floatの違いは何ですか? C#ので
- 11. C#Entity Frameworkプライマリキー違反
- 12. C#.NET Entity Frameworkのマルチテナントのベストプラクティス
- 13. SQLiteラッパー1.0.77と.NET Framework 4のEntity Framework
- 14. は、.NET Framework
- 15. C#、ライブラリ用のベスト.NET Framework 2.0ブック?
- 16. .net2.0と.net 4.0 gdi +の違いは?
- 17. Sharepointと.NET開発の違いは?
- 18. .NET 3.0と3.5の違いは?
- 19. .Net工場とコンテナの違いは?
- 20. StructureMapとASP .Net Web APIと.Net Framework 4.5
- 21. 違い、C++、C#とJavaは
- 22. .Net Framework 4完全版とNet Framework 4クライアントプロファイルのターゲット設定
- 23. Unityと.NET Frameworkのバージョン
- 24. NET FrameworkとSDKのダウンロード
- 25. FileSecurityと.NET FrameworkのDirectorySecurity
- 26. Linq2SQLと.NET Framework 4.0のEF
- 27. Play FrameworkのSilhouetteとDeadbolt 2の違い
- 28. Linq/Entity Frameworkのオブジェクトとコンテキストの違い
- 29. .NET Coreおよび.NET Framework用のC#ライブラリ
- 30. C#Entity Framework(.Net Core)検証(サーバー側)
'lock'はC#キーワードです。 'Monitor'は.NET Frameworkの一部であるC#クラスです。 c#コンパイラは 'lock'ブロックを' Montior.Exit() 'と' Montior.Enter() 'に置き換えます。 – user3185569
関連性:http://stackoverflow.com/questions/2724864/what-is-the-difference-between-c-sharp-and-net/2724872#2724872 –
C#言語は.NET Frameworkに依存しません。 C#言語は、C#コンパイラとC#言語仕様のセットに依存します。 Common language Runtime(マイクロソフトの実装があります)のルールはもちろんです。 .NETフレームワークの大部分がネイティブなC++クラスを呼び出すことは注目に値する。 – user3185569