1

C# について少し書く必要がありますが、一般的には簡単なことでしょうか。いいえ!

さまざまなインターネット リソースや書籍を検索しましたが、得られたのは頭痛の種です。たとえば、ガベージ コレクターの一部の情報源は、これは C# の機能であり、CLR がこの機能を取得し、C# は他のすべての .NET 言語と共にデフォルトで取得したと述べています。もちろん、私の CLR への投票ですが、明示的なコード変換を避けるなど、混乱を招くものが他にもたくさんあります。多分私は悪い本やリソースを持っている...だから、誰かがC#について明確に述べられている場所を提案するだろう

2 つ目は、C# 構文の起源です。ここでも選択肢が少なく、明確なものはありません。他の作成者による他の言語の組み合わせです。C、c++、Java は問題ありませんが、VB6 と Delphi には疑問があります。また、これらの言語に由来する機能は c# と混同されていますが、実際には C# 機能なのか CLR 機能なのかは明確ではありません

MTH

4

5 に答える 5

6

GC は CLR によって提供されます

C# は、言語仕様で規定されているすべてのものであり、それ以上のものではありません。

実際には C# の機能である、より興味深いもののいくつか:

  • イテレータ ブロック [yield return]
  • 匿名メソッド / クロージャー / ラムダ [構文、式ツリーと混同しないでください]

ただし、入力するコードに関連するもので、CLR またはフレームワークによって直接提供されないものはすべて、言語機能です。もちろん、他の言語もそれらを実装する可能性があります...

  • [試して/最終的に/破棄]を使用して
  • lock [Monitor.Enter/try/finally/Monitor.Exit]
  • foreach [GetEnumerator()/while/[破棄]]
  • 拡張メソッドの解決
  • クエリ構文 ["where pred" から .Where(x=>pred) など]

(もちろん、これらはほんの一例です。繰り返しになりますが、他の言語でもこれらの機能を自由に提供できます!)

于 2008-11-19T11:37:44.170 に答える
3

GC 自体は CLR 機能ですが、C# 言語は、正確なセマンティクスを定義せずに、GC がガベージ コレクションを備えたプラットフォームで実行されていることを前提としています。

正確に特定するのは難しいことですが、大まかな目安としては、「言語仕様で明確に定義されている場合、それは C# の機能である」ということです。

分類する機能の例をさらにいくつか挙げることができれば(「明示的なコード変換の回避」は、詳細を説明したい場合を除き、言語機能ではありません)、それは役に立ちます。

于 2008-11-19T11:40:28.580 に答える
0

2 つ目は、C# 構文の起源です。ここでも選択肢が少なく、明確なものはありません。他の作成者による他の言語の組み合わせです。C、c++、Java、それは問題ありませんが、VB6 と Delphi、

C# が VB から得たもの:

  • プロパティ
  • イベント
  • For-Each ループ
  • C# で「静的クラス」として宣言されたモジュール
  • デフォルト プロパティを使用してクラスを配列のように機能させる
  • 遅延バインディング (C# 4)
  • 整数オーバーフロー チェック (C、C++、および Java は、整数のオーバーフローを検出できません)
  • C++ dll を呼び出すための P/Invoke

ある意味では Optional Parameters (C# 4) ですが、実際にはそれは COM によるものです。

于 2008-11-20T08:52:11.913 に答える
0

CLR は、C# を含む .NET 言語の 1 つで記述されたマネージ コードをサポートする開発プラットフォーム (ランタイム環境) です。ガベージ コレクションは CLR 機能です。コード アクセス セキュリティとマネージ コードのジャスト イン タイム コンパイルも同様です。

于 2008-11-19T11:36:31.770 に答える
0

C# 言語仕様を使用することができます。参考文献は次のとおりです。

  1. C# 仕様 (MSDN)
  2. 標準 ECMA-334 C# 言語仕様
于 2008-11-19T11:47:59.267 に答える