回答編集履歴
3
回答の追記
answer
CHANGED
@@ -21,5 +21,17 @@
|
|
21
21
|
|
22
22
|
日本語が変で申し訳ありません。
|
23
23
|
|
24
|
+
【追記】
|
25
|
+
何故この様な型キャストが起きるのか?
|
26
|
+
こちらについては、このIF演算子の使い方が答えとなります。
|
27
|
+
この演算子は、厳密なOR代入です。
|
28
|
+
第一引数を評価して、真なら第二引数を、偽なら第三引数を、
|
29
|
+
それぞれ評価してから、推論の型で返却し左辺(変数)へ代入します。
|
30
|
+
代入する値の型が変数の許容外の場合、型の不一致エラーが起こりますので、
|
31
|
+
それを起こさない為に渡された引数の型から返すべき値の型を推論します。
|
32
|
+
|
33
|
+
※ショートサーキット評価の場合、疎漏なOR代入の為に実行時点で、
|
34
|
+
例外スローか発生しますので、下記の参考リンクの様にエラー文が有ります。
|
35
|
+
|
24
36
|
[本家リファレンス](https://docs.microsoft.com/ja-jp/dotnet/visual-basic/language-reference/operators/if-operator)
|
25
37
|
[参考リンク](https://docs.microsoft.com/ja-jp/dotnet/visual-basic/misc/bc33110)
|
2
回答の修正
answer
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
本家サイトにも記載がありますが、
|
2
2
|
引数3(Nothing)は、評価されております。
|
3
3
|
|
4
|
-
そのため、評価され
|
4
|
+
そのため、評価された値の引数3の値が戻ります。
|
5
5
|
|
6
6
|
1:IF演算子
|
7
7
|
2回目は、IF(Boolean型, Date型, Nothing);
|
@@ -16,5 +16,10 @@
|
|
16
16
|
つまるところ、型の一致をさせる処理が動くため、演算子と制御構文で違いがあるです。
|
17
17
|
同じ挙動にする場合、IF演算子で行う処理とIF制御構文で行う処理を厳密に合わせる必要が発生します。
|
18
18
|
|
19
|
+
下記に参考リンクを挙げておりますが、
|
20
|
+
何故か?の理由は、ショートサーキット評価を行う際に、型を一致させるためです。
|
21
|
+
|
22
|
+
日本語が変で申し訳ありません。
|
23
|
+
|
19
24
|
[本家リファレンス](https://docs.microsoft.com/ja-jp/dotnet/visual-basic/language-reference/operators/if-operator)
|
20
25
|
[参考リンク](https://docs.microsoft.com/ja-jp/dotnet/visual-basic/misc/bc33110)
|
1
回答の修正
answer
CHANGED
@@ -1,13 +1,20 @@
|
|
1
1
|
本家サイトにも記載がありますが、
|
2
2
|
引数3(Nothing)は、評価されております。
|
3
3
|
|
4
|
-
そのため、評価されて、引数3の値が
|
4
|
+
そのため、評価されて、引数3の値が戻ります。
|
5
5
|
|
6
|
+
1:IF演算子
|
6
|
-
|
7
|
+
2回目は、IF(Boolean型, Date型, Nothing);
|
7
|
-
|
8
|
+
この関数では、渡された第二引数と第三引数は型を合わせます。(これが評価です。)
|
8
|
-
|
9
|
+
関数の実行内部で型変換により、NothingをDate型のNothing(Date型の規定値として)返します。
|
9
|
-
元々変数bに入っていた値がそのまま返されております。
|
10
10
|
|
11
|
+
2:IF制御構文
|
12
|
+
Nothing(null)を代入しています。
|
11
|
-
|
13
|
+
※変数dはnull許容型なので、Nothing(null)が代入されています。
|
12
14
|
|
15
|
+
今回、ご質問の件ですが、
|
16
|
+
つまるところ、型の一致をさせる処理が動くため、演算子と制御構文で違いがあるです。
|
17
|
+
同じ挙動にする場合、IF演算子で行う処理とIF制御構文で行う処理を厳密に合わせる必要が発生します。
|
18
|
+
|
13
|
-
[本家リファレンス](https://docs.microsoft.com/ja-jp/dotnet/visual-basic/language-reference/operators/if-operator)
|
19
|
+
[本家リファレンス](https://docs.microsoft.com/ja-jp/dotnet/visual-basic/language-reference/operators/if-operator)
|
20
|
+
[参考リンク](https://docs.microsoft.com/ja-jp/dotnet/visual-basic/misc/bc33110)
|