C# の int など組み込み型は struct でできてた
◆ int や char などキーワードは実体が Int32, Char などがある
◆ それらの種類は struct
◆ string (String) は class
◆ それらの種類は struct
◆ string (String) は class
いまさらなのですが C# の int とか bool とかって struct なのですねー
なんとなく右クリックして定義に移動を押してみて 気づきました
それに C 風に書けるようにしてる int や bool などのキーワードは実体が別にあってちゃんと大文字から始まるんですねー
float だけ別の名前で Single なのがちょっと意外
double を考えると float より single が正しい呼び方?
あと string だけは class でした
char の集まりなわけですしね
null も入れられますし
メソッドが使えるのも struct でオブジェクトだからなんですねー
JavaScript だと Number 型や Boolean 型はオブジェクトでないプリミティブ値で Object を継承してません
ですがメソッド呼び出しなどプロパティを取り出せます
null みたいに プロパティアクセスでエラーが起きません
これらのプリミティブ値はプロパティアクセスしたときに一時的に対応するオブジェクトに変換してそのプロパティを取り出す特別な仕組みで そのせいで 「1..property = 1」 と代入もできますが一時オブジェクトは評価後に捨てられるので 代入してもその値は取り出せないという初心者にはバグな元もあったりします
JavaScript に慣れすぎてるせいか C# の int なども特別な扱いされてるんだろうと思い込んでましたが普通に struct なオブジェクトだったのですね
なんとなく右クリックして定義に移動を押してみて 気づきました
それに C 風に書けるようにしてる int や bool などのキーワードは実体が別にあってちゃんと大文字から始まるんですねー
float だけ別の名前で Single なのがちょっと意外
double を考えると float より single が正しい呼び方?
あと string だけは class でした
char の集まりなわけですしね
null も入れられますし
keyword | 実体 | 種類 |
int | Int32 | struct |
short | Int16 | struct |
long | Int64 | struct |
uint | UInt32 | struct |
ushort | UInt16 | struct |
ulong | UInt64 | struct |
byte | Byte | struct |
sbyte | SByte | struct |
decimal | Decimal | struct |
float | Single | struct |
double | Double | struct |
char | Char | struct |
string | String | class |
メソッドが使えるのも struct でオブジェクトだからなんですねー
JavaScript だと Number 型や Boolean 型はオブジェクトでないプリミティブ値で Object を継承してません
> typeof 1 === "object"
// false
> 1 instanceof Object
// false
> "a" instanceof Object
// false
> function A(){}
> new A() instanceof Object
// true
// false
> 1 instanceof Object
// false
> "a" instanceof Object
// false
> function A(){}
> new A() instanceof Object
// true
ですがメソッド呼び出しなどプロパティを取り出せます
null みたいに プロパティアクセスでエラーが起きません
これらのプリミティブ値はプロパティアクセスしたときに一時的に対応するオブジェクトに変換してそのプロパティを取り出す特別な仕組みで そのせいで 「1..property = 1」 と代入もできますが一時オブジェクトは評価後に捨てられるので 代入してもその値は取り出せないという初心者にはバグな元もあったりします
JavaScript に慣れすぎてるせいか C# の int なども特別な扱いされてるんだろうと思い込んでましたが普通に struct なオブジェクトだったのですね