回答:
Svickの答えは良いが、私はいくつかの余分なポイントを追加すると思った。
まず、段落に欠陥があります。ポインタ型はオブジェクトから継承しません。コンパイル時にインターフェイス型または型パラメーター型として知られている値は、実行時に、無効な参照またはオブジェクトから継承する何かの真正なインスタンスのいずれかになりますが、これらの型は「オブジェクトから継承します。継承は、祖先のメンバーが子孫のメンバーであるプロパティですが、通常、「ToString」がIEnumerableのメンバーであるとは考えません。IEnumerableを実装するもののメンバーであると考えています。
これは仕様に「プリミティブ型」が表示される唯一の場所であり、定義なしに表示されるため、段落にも欠陥があります。したがって、これは不必要でわかりにくいため、削除する必要があります。
この段落をしばらくの間修正したいと思っていました。次回Madsを見るとき、彼に思い出させます。
特定の質問に対処するには:svickはもちろん正しいですが、特定の例を見ると役立ちます。あなたが言う時:
struct ColorfulInt
{
int value;
Color color;
...
}
そして、あなたは、例えば、配列を作成します:
ColorfulInt[] x = new ColorFulInt[100];
次に、これらの100個のintと100個のColorのストレージは、配列自体に格納されます。代わりに、ColorfulIntがクラスである場合、配列には、ColorfulIntへの100個の参照が含まれ、各参照を個別に割り当てる必要があります。これらの100個の要素を個別に割り当てることは、単に配列自体にストレージを割り当てるよりも、時間とスペースの両方で効率がはるかに低くなります。