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

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

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

Re[2]: C#からVB.NETへのコンバート


(過去ログ 95 を表示中)

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

■57063 / inTopicNo.1)  C#からVB.NETへのコンバート
  
□投稿者/ コン (1回)-(2011/02/10(Thu) 15:21:29)

分類:[.NET 全般] 

上司のきまぐれで、C# express 2005 で作成したプロジェクトを、
VB.NET expressにコンバートしなければならなくなりました。

Web上で変換するページがいくつかあるようでした。
ただ、プロジェクトのボリューム的にWeb上での変換は避けたいと思っています。
(またフォームの数も多いため)

C#のcsprojを指定すると、VBのプロジェクトに変換してくれるような
都合のよいコンバートツールはありますでしょうか。。。

何かよい方法があれば教えてください。
よろしくお願いします。

引用返信 編集キー/
■57065 / inTopicNo.2)  Re[1]: C#からVB.NETへのコンバート
□投稿者/ 魔界の仮面弁士 (2061回)-(2011/02/10(Thu) 16:26:40)
No57063 (コン さん) に返信
> 上司のきまぐれで、C# express 2005 で作成したプロジェクトを、
> VB.NET expressにコンバートしなければならなくなりました。

EXE からの解析変換で良ければ、Reflector を使って行えますが、
プロジェクトファイルからの変換については知らないです。

> Web上での変換は避けたいと思っています。
今回のケースで役に立つかどうかは分かりませんが、
SharpDevelop に変換機能があるようです。
http://www.masahiko.info/it/archives/000388.html



> 都合のよいコンバートツールはありますでしょうか。。。
幾つかの機能は、VB への単純変換が困難もしくはそもそも不可能です。
そのため、機械的な変換だけでなく、手動での書き換えも併用する事になるでしょう。


・ポインタ型
 →VB ではサポートされていません。直接変換は困難なため、C# 側を
  Marshal クラス等を使った構文で書き換えてからコンバートした方が良いでしょう。

・Office オートメーション
 →C# 2005 では、引数付きプロパティおよび省略可能引数がサポートされていませんが、
  VB では利用可能であるため、呼び出し方を変更する必要があります。
  たとえば Excel を参照設定した場合、Range.Value プロパティは、C# 2005 では
  get_Value(object) メソッドおよび set_Value(object, object) メソッドに
  変換する事になりますが、VB では Value(Optional Object) プロパティでの
  呼び出し構文に書き換える必要があります。
 →C# 2005 では実行時バインディング(レイトバインド)がサポートされていないため、
  Reflection を利用した複雑なコードが利用される事が稀にありますが、VB では
  それらをより単純なコードに置き換える事ができます(Reflection のままでも動きますが)。

・三項演算子
 →VB2008 からのサポートです。VB2005 では If ステートメントへの展開が必要です。

・反復子 および yield
 →VB ではサポートされていません。代替クラスを用意する必要があります。

・匿名メソッド
 → VB2010 からのサポートです。VB2005/2008 では通常のメソッド用意して
  それを AddressOf 指定することで対応してください。

・null 許容型
 →VB2008 からのサポートです。VB2005 では Nullable クラスでの表現が必要です。

・静的クラス
 →VBには該当機能がありません。「Module」または「全メンバーが Shared な Class」で
  代用できますが、Module と Class では利用側のコードに差異が生じます。

・ディレクティブ
 →C# の #region ディレクティブは、メソッド内でも利用できますが、
  VB の #Region ディレクティブは、メソッドの内側では利用できません。
  また、#warning, #error, #pragma, #undef, #pragma に相当する機能は
  VB には用意されていません。一部、それに近いコンパイラオプションはありますが。

・コントロールのスコープ
 →C# の場合、フォームにコントロールを貼った場合、そのコントロールは
  private スコープ(VB でいうところの Private) になりますが、VB では
  Friend スコープ(C# でいうところの internal) が初期状態となります。
  (コントロールのスコープは、デザイン時に Modifiers プロパティで変更できます)
引用返信 編集キー/
■57067 / inTopicNo.3)  Re[2]: C#からVB.NETへのコンバート
□投稿者/ コン (2回)-(2011/02/10(Thu) 16:39:43)
魔界の仮面弁士様、ありがとうございます。

SharpDevelop を早速試してみました。
インストール、コンバートと問題なく進めました。
フォームの変換もできました。

ただし、コンパイルはすべて通らずエラーが数十個でてきました。
「宣言が必用」、「構文エラー」、「アクセスできな保護レベル」等、
なんとか対応できそうなレベル、数でしたので、これで作業を進めることが
できそうです。

ありがとうございました。
大変、感謝しております。

解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -