は、私は、Microsoft .NET Frameworkアプリケーション開発ツールキットから次の文を読みました値の型がオブジェクトとしてどのように機能するかを理解するのに役立ちますか?オブジェクトのような値の型はどうですか?</p> <blockquote> <p>「値のタイプは、多くの場合、 は、単純な値を表しているにもかかわらず、彼らはまだ 機能オブジェクトとして」</p> </blockquote> <p>ことができます誰:
SAJ
は、私は、Microsoft .NET Frameworkアプリケーション開発ツールキットから次の文を読みました値の型がオブジェクトとしてどのように機能するかを理解するのに役立ちますか?オブジェクトのような値の型はどうですか?</p> <blockquote> <p>「値のタイプは、多くの場合、 は、単純な値を表しているにもかかわらず、彼らはまだ 機能オブジェクトとして」</p> </blockquote> <p>ことができます誰:
SAJ
、彼らはあなたがそれらにメンバ関数をのみた値を呼び出すことができませんでした(ただし舞台裏でいくつかの魔法があります:(UN)ボクシングは)場合。 C#でarticle on value types:あなたは、これは他のあなたが注意
C.
のような実数値を持つ言語で実装することができないであろうしながら、2.toString()
作品は、(2値型です)。 抜粋:値型はしばしば単純な値を表しますが、それでもオブジェクトとして機能します。つまり、それらのメソッドを呼び出すことができます。実際には、テキストとして値を表示するときにToStringメソッドを使用するのが一般的です。 ToStringは、基本的なSystem.Object型からオーバーライドされます。
this(ボクシングとアンボクシング)を参照してください。 NULL可能<T>システム以外のすべての値型について
は次にObject
由来ValueType
に由来する対応するクラス型を定義します。値型のものをクラス型の格納場所に配置する必要がある場合、システムは暗黙的に値型をクラス型に変換します。コンパイラは、結果のオブジェクトインスタンスが値型であると主張しますが、インスタンスは実際にはクラス型セマンティクスを持ちます。これは主に、インタフェースを実装する値の型にとって重要です(例えば、List<T>.Enumerator
はIEnumerator<T>
を実装する構造体です)。制約で使用されるインタフェースは値型でもクラス型でもありませんが、インタフェース型の格納場所(変数、フィールドなど)は常にクラス型として格納され、格納されているオブジェクトインスタンスはクラス型のインスタンスとして動作します。