6

最近、ac#チームからvb.netチームに切り替えました。私が答えを見つけることができなかったことの1つは、コンパイルエラー/オプションの違いです。説明させてください。

C#では、デフォルト設定を使用して、以下のようなテンプレートクラスに無効な型を渡そうとすると、コンパイル時エラーが発生します。ここでは、文字列型の動物を作成し、その後、日時を渡すと、コンパイルエラーが発生します。

 IAnimal<string> animal = new Animal<string>();
 animal.SetTrainer(DateTime.Now);

「OptionStrict」を使用すると、vb.netで同じコンパイル時エラーが発生することはわかっています。ただし、同じファイルには、「OptionStrict」でコンパイルされないレガシー(VB)コードが多数あります。どのようなオプションがありますか。私はこれを考えています:

  1. 「OptionStrict」に切り替えて、すべてのエラーを修正してください。時間がかかり、動作するコードが破損する可能性があります。
  2. ジェネリックスのコンパイル時チェックを確実にする代替手段があるかもしれません。結局のところ、ジェネリックはかなり新しいので、これを常に実施する方法があるかもしれません。

前もって感謝します

4

2 に答える 2

6

プロジェクト->マイプロジェクトをダブルクリックします。

コンパイルに移動し、警告構成を探します

これで、いくつかの設定を変更できます。

  • 暗黙のキャスト
  • 遅延バインディング

それらをエラーではなく警告にします。

コンパイル時のエラーは発生しませんが、少なくともいくつかの警告が表示されます。

別の解決策は、クラスを部分クラスにして、コードを新しいファイルに移動することです。ファイルごとにOptionStrict/OptionExplicitを設定できます。

于 2012-10-24T07:11:16.193 に答える
3

「OptionStrict」に切り替えて、すべてのエラーを修正してください。時間がかかり、動作するコードが破損する可能性があります。

はい、そうします。それはあなたが正気を保つのに役立ちます。

ポップアップするエラーのほとんどは、おそらく単純なキャストの問題であり、簡単に修正できます(CIntここ、ToString()そこ...)。

Option Strict Onファイルレベルで有効にできるため、ソリューション全体またはプロジェクトを一度に修正する必要はありません。あなたがそれに触れなければならないので、すべてのファイルを修正することは良い習慣にしてください。

これは常に可能であるとは限りませんが、変更を壊すことなく、 Option Strict On(たとえば、COMもの)に大きく依存するコードを別のファイルに移動することもできます。

于 2012-10-24T07:18:24.883 に答える