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

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

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

Re[2]: VB.net セーフモード


(過去ログ 114 を表示中)

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

■67673 / inTopicNo.1)  VB.net セーフモード
  
□投稿者/ 寅 (17回)-(2013/08/23(Fri) 07:46:46)

分類:[.NET 全般] 

VB.net 2010 Expressのコンパイルでセーフモードの様なモードありませんか?
多分、プロジェクトのプロパティーを色々いじって居る時に見つけたんでは無いかと思うのですが、今、見てみると見つかりません。
ネットで検索してもヒットしないので、何かを見間違えたのかもわかりませんが。

何が知りたいかと言うと、この質問の一つ下のnewで作ったフォームへのアクセスですか、ひょっとしてVBがアクセス方法が安全で無いのでエラーにしているのかと考えた次第です。それで、プログラマー責任でそれを解除できればコンパイル出来る様になるのではと。

ご存知の方がいらっしゃいましたら宜しくご回答下さい。
引用返信 編集キー/
■67677 / inTopicNo.2)  Re[1]: VB.net セーフモード
□投稿者/ 魔界の仮面弁士 (312回)-(2013/08/23(Fri) 09:42:03)
2013/08/23(Fri) 09:46:02 編集(投稿者)

No67673 (寅 さん) に返信
> VB.net 2010 Expressのコンパイルでセーフモードの様なモードありませんか?
C# には「unsafe モード」があったりしますけれどね。


VB のコンパイラオプションで、安全性への影響度の大きい物としては、
 (1)整数のオーバーフローチェックを行うか否か
 (2)最適化を行うか否か
 (3)変数宣言を強制させるか否か
 (4)変数の型推論を許可するか否か
 (5)暗黙の型変換を許容するか否か
ぐらいでしょうか。


たとえば (1) の設定を施すと、
 Dim a As Byte = 200
 Dim b As Byte = 100
 Dim c As Byte = a + b
 MsgBox(c)
というコードの動作が変化します。
整数チェックが有効なら、エラーになる(OverflowException)のですが、
整数チェックを省略すれば、「40」という結果が返されます。



> この質問の一つ下のnewで作ったフォームへのアクセスですか、
「一つ下」という表現は適切ではない気もしますが、これは恐らく
No67667 のスレッドのことですよね。


一応、上記(5) の暗黙の型変換(Option Strict 設定)を許容すれば、
No67675 にも書いたように、「レイトバインド」でのアクセスが許容されます。

 'Form2 に Button を貼り、その Button1 の Modifers を Public にしておきます。
 Dim f As Form = New Form2()
 CObj(f).Button1.PerformClick() '★

★ の箇所の「CObj(f).Button1」の箇所は、Option Strict がオフになっていれば
そのままコンパイルされますが、同設定がオンになっていた場合は
 『error BC30574: Option Strict On では、遅延バインディングを使用できません。』
のエラーが発生してコンパイルが通らなくなりますし、Custom設定の場合には
 『warning BC42017: 遅延バインディングの解決です。ランタイムエラーが発生する可能性があります。』
の通知がコンパイル時に報告されるようになります(コンパイル自体は行われます)。
引用返信 編集キー/
■67685 / inTopicNo.3)  Re[2]: VB.net セーフモード
□投稿者/ 寅 (19回)-(2013/08/23(Fri) 12:10:52)
No67677 (魔界の仮面弁士 さん) に返信
> 2013/08/23(Fri) 09:46:02 編集(投稿者)
>
> ■No67673 (寅 さん) に返信
>>VB.net 2010 Expressのコンパイルでセーフモードの様なモードありませんか?
> C# には「unsafe モード」があったりしますけれどね。

ひょっとすると同時に見ていたC#のコンパイラーで見たのをVBでみたと勘違いしたのかも知れません。

このモードの(VBでは無い様ですけど)必要性は魔界の仮面弁士 さんにご回答頂いた#67667が解決しましたので、必要なく成りました。 

有難うございました。

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


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

このトピックに書きこむ

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

管理者用

- Child Tree -