C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: VBではできないがC#ではできること


(過去ログ 96 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■57422 / inTopicNo.1)  VBではできないがC#ではできること
  
□投稿者/ チーマージャン (1回)-(2011/02/25(Fri) 16:08:05)

分類:[.NET 全般] 

いつもVB(VB2008)ばかり使用しているので、Webでサンプルを探してもC#のサンプルしかないという場合があり、
このためいつもC#→VB変換を行っています。
いっそのことC#を本格的に勉強しようとも思っていますが、VBにどっぷりとつかっているのでなかなかVBから離れられません。

前置きが長くなりましたが、VBではできないことで、C#ではできることには、どのようなものがあるでしょうか?
それとも、.netの範囲であればC#でできるものはVBでも出来るのでしょうか?
どうぞよろしくお願いいたします。

引用返信 編集キー/
■57423 / inTopicNo.2)  Re[1]: VBではできないがC#ではできること
□投稿者/ 囚人 (589回)-(2011/02/25(Fri) 16:14:41)
最終的に実現できる事には違いはないです。全くないと言ってもいいです。

ただ、一方では簡単に表現できることが他方の言語では表現し辛いという事があります。

VBは「面倒なことは書かないでとにかく簡単に」、C#は「少々長くなっても明示的に」という傾向があったんですが、バージョンが上がるにつれてお互い近づきつつありますね。

引用返信 編集キー/
■57426 / inTopicNo.3)  Re[1]: VBではできないがC#ではできること
□投稿者/ 魔界の仮面弁士 (2106回)-(2011/02/25(Fri) 18:33:57)
No57422 (チーマージャン さん) に返信
> いつもVB(VB2008)ばかり使用しているので、
(中略)
> VBではできないことで、C#ではできることには、どのようなものがあるでしょうか?

過去ログは参照されましたか? 同じような話があったはず。


バージョンが異なれば状況も変わります。たとえば、
 ・VB2008 ではレイトバインドが使えるが、C# 2008 では使えない。(C# 2010 なら可能)
 ・C#2008 では複数行の複数行のラムダ式を作れるが、VB2008 では不可。(VB2010 なら可能)
のように。

とりあえず、「C#2008 で可能だが、VB2008 で不可」という話に限定すると:

・大文字小文字のみが異なるメソッドを呼び分けられない。(リフレクションが必要)
・#region をメソッド内で利用できない。
・複数行にわたるラムダ式を作れない。(VB2010 以降であれば可能)
・静的配列(stackalloc)をサポートしていない。(動的配列のみ)
・yield の糖衣構文が使えない。(自分でイテレータクラスを実装せねばならない)
・Object 型に対して拡張メソッドが適用されない。(Object 派生クラスにのみ適用)
・アンセーフポインタ型を利用できない。(void* 等)
・オーバーフローチェックを切り替えられない。(check / uncheck の演算子・ステートメント)
・無名可変数引数( __arglist ) を作れないし呼び出せない。(名前付き引数ならば ParamArray で可)
・ref 引数と out 引数が区別されない。(どちらも ByRef になってしまう)
・static class に相当する機能が無い。(多くの場合は Module で代用可能)
・複数行に渡る文字列構文(@)が無い。(CDATA や <!-- などであれば複数行の記述が可能)
・複数行コメント構文(/*〜*/)が無い。(VB は、単一行用の「'」と「REM」のみ)
・volatile フィールドを作成できない。
・コレクション初期化子が使えない。(VB2010 以降であれば可能)


後、何があったっけ…。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -