OSTRACISM CO.
C#とObjective-CとJavaと...
基本型とクラス
C由来のintやらcharやらfloatなどを基本型と表現する。Cにオブジェクト指向の機能を加えるということで、C++、Objective-C、Javaはこれにオブジェクト型としてクラスを加えている。
しかし、基本型とクラスが似て異なるものになってしまている。C++、Objective-C、Javaでは基本型はメソッドを持っていない。C由来の演算はあるがそれはメソッドではない。
C#はこれを克服し、基本型をなくしてしまった。全ての型はクラスであるとしたのである。intはSystem.Int32のエイリアス。stringはSystem.Stringのエイリアス、そして配列までもSystem.Arrayのエイリアスだとしている。最も実務的と言われているC#のみが全てはクラスであるとしているのは何かの皮肉であろうか。
実際はSystem.Int32はclassではなくstructなのだが、2者の違いはヒープを使うかどうか、すなわち参照型か値型かにあり、両者ともにOOP的にクラスである。
Cocoaでは基本型はNSNumberクラスで扱う。Javaでは各型毎に、longならLongクラス、intならIntegerクラスというようにラッパークラスがある。
整数を文字列に
C
char str[16];
sprintf(str, "%d", intValue);
C#
string str = intValue.ToString();
Objective-C
NSString *str = [[NSNumber numberWithInt:intValue] stringValue];
Java
String str = Integer.toString(intValue);
あるいは
String str = String.valueOf(intValue);
2005.07.06
2005.09.18
「インデックス」へ戻る
OSTRACISM CO.
OSTRA / Takeshi Yoneki