[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends:00085] Re: Microsoft C#



●●〜生活者と企業のコミュニケーションメディア〜 《 MyVoice》●●
●●――― アンケートモニターへの登録で、ビックなプレゼント ―――●●
☆★☆★☆ 旅行券10万円 、大好評「プレステ2」も当たる!  ☆★☆★☆
あなたの意見を、社会へ、企業へ発信します // 会員サービスもいろいろ!!
 ◎登録無料、今すぐクリック→ ◇◆  http://www.myvoice.co.jp/voice ◆◇



上原さん:
> C#の特徴をリストアップしてみました。
>勘違い、誤解などもあるかと思いますが、とりあえず。

私のレポートよりかなり充実してます。参考します。

私のレポート部分ですが、バグ発見です。
> void swap(ref int a, ref int b) { int t = a; a = b; b = a; }
                                                      b = t ですな。
#######
> ・stackalloc指定するとスタック上に動的にオブジェクトを割り付けられる
>       int* fib = stackalloc int[100];

ここにもポインタが :-)
ということは unsafe の中でしか使えないのか。。

#######
> ・すべてがオブジェクト。数値3もメソッドを持っている。すべてのオブジェ
>   クト型の基底となる「object」型がある。しかし、効率上のペナルティはな
>   い。値を持った基本型を便宜的にobject型に代入できる(boxing, unboxing)。
> 
>   (例)
>    Console.WriteLine(3.ToString());

これは、違うのでは?
いや、確かにドキュメントには、"all types derive from object"と書いてありますが、
その後の説明を見る限りでは、

1.定数や基本型は object ではないが、object的に扱えるシンタックスシュガーが
  用意されている。

2.object に代入する際に、自動的にその値のコピーを持つラッパーオブジェクトが
  生成される(boxing)。

3.ラッパーオブジェクトを元の型にキャストすると、ラッパーオブジェクトが保持
  している値のコピーが返される(unboxing)。

ということのようです。コレクションに基本型を出し入れするには便利ですね。

#######
> ・独自のクラスライブラリは持たない。その代わりに、Visual Basic や
>   Visual C++ のような言語によっても使われる共通のクラス・ライブラリを
>   使用する。

これは、意味がよくわからないです。どの辺りに記載がありましたでしょうか。

#######
> ・継承を禁止するfinalクラスの代わりに「sealedクラス」を使う 
> ・親クラスを指定する「super」の代わりに「base」を使う

無理に予約語名を変えなくても。。。^^;

#######
> ・C#はネイティブコードを最初から生成する(たぶん)ことで、ンタイムコン
>   パイルのコストを回避する(クロスプラットフォーム性は失われる)。

ルートの遠藤さんの投稿にあるように、
Microsoftは「OSからも言語からも独立している」といっています。
戦略的に考えても、NT-IA64 や MacOS-PowerPC でも動作する仕掛けが
入っていると見るのが自然です。

これは想像ですが、VisualBasicのような中間コードが入った .exe が出来て、
それはランタイム環境を起動するという仕掛けではないでしょうか。
実は中間コードは Javaバイトコードで、ランタイムはIE付属のMS-JavaVMという
仮説を提唱しておきます。
将来、おなじ仕掛けで Basic#や、Pascal# も出せばまさに「言語独立」という
案配です。