2012-02-09 8 views
3

可能性の重複:
Why do primitive types in C# have their own operations?プリミティブ型にはどのように関数がありますか?

私はC#を学んだし、私は、コードが混乱以下見つける:
int.Parse();
はどのようにプリミティブデータ型は、機能を持つことができますか?

+2

私は自分の疑問を持っています:**どうしてですか?** – gdoron

+0

@gdoron私の知る限り、オブジェクトと構造変数は(C++/Javaでは)関数を持つことができます。 –

+0

O.k. 'int'は' struct'です... – gdoron

答えて

1

プリミティブ型であります実際にはstructのオブジェクトはC#。

intの場合は、Int32構造体によって表されます。データ型は、スタックベースまたはヒープベースの変数のいずれかに分類されている.NETの仕様により

enter image description here

Int32 structure

+0

良い点を指摘して回答してください。ありがとう。 –

1

.netフレームワークのプリミティブ型はstructureです。

0

intなどの型は、値を含むプリミティブな値型ですが、構造体System.Int32 - メソッドと両方のインスタンスメソッドを含んでいます(myInt.ToString() 、あるいは5.ToString())及び静的メソッド(int.Parse()System.Int32.Parse()の省略形である。

+0

'int'は、' System.Int32'の文法砂糖です。 'struct'は、' ObjectType'を継承する 'ValueType'を継承しています。 。 'int'と' System.Int32'は同じバイトコードまでコンパイルします。 'Parse()'と 'TryParse()'は 'Int32'の一部であり、' .ToString() 'は' Object'のものです。 'Int32'構造体は値を保持します。 –

+0

だから、それらはハイブリッドまたは構造体だけですか? –

+0

私がハイブリッドを言ったとき、彼らは両方とも基本的な値型(C言語や他の言語のような)であることを意味しましたが、Integerが本格的なオブジェクトであるJavaの場合と同様、Objectから派生し、 。C#実装は、両方の要素を共有します。 –

2

プリミティブデータ型は構造である。差の良い説明は、「天然」構造体がhereを見つけることができた。

+0

リンクをありがとう。非常に有益。 –

-1

:あなたは、実際にint単語を置くことにより、容易にそれを見ることができます。この区別は、どのように変数が格納されるかが決定されます。スタックベースの変数は値によって格納されます。

あなたの質問に集中して、どのようにint関数を持つことができます。 int、short、decimal、string、double、long ..などのすべての整数データ型を調べると、対応するヒープベースのクラスがあります。

.netコンパイラは、整数型(プリミティブ)を内部的にヒープベースの表現に変換します。

ので、intがのInt32 は短いが、そうで

をINT16となりなります。

BTW、整数型、構造体、列挙型はスタックベースの変数であり、参照としてではなくメモリに直接格納されます。

+1

これはあまりにも間違っているので、これは冗談でなければなりません。 – AakashM

+1

あなたにそれを教えてくれる男を見つけて、彼を殴ってください! ** =)** – gdoron

関連する問題