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