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

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

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

Re[3]: キャストしたオブジェクトのメソッドを実行するには?


(過去ログ 114 を表示中)

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

■67173 / inTopicNo.1)  キャストしたオブジェクトのメソッドを実行するには?
  
□投稿者/ bagabon (3回)-(2013/07/10(Wed) 17:51:47)

分類:[C#] 

初歩的な質問かも知れませんが、ご存知の方がいましたらご教授下さい。

VBでは以下の記述は問題無く実行できます。
Dim otmp As Object = 123.456
Debug.Print(CType(otmp, Double).GetType().ToString())


C#で同じことをしようとすると次のエラーメッセージが出ます。
「型'string'を型'double'に変換できません」
エラーメッセージから察するに、C#の場合は、メソッドを実行してからキャストしようとしています。
object otmp = 123.456;
System.Diagnostics.Debug.Print((Double)otmp.GetType().ToString ());


下のようにDouble型の変数を定義するとエラーは無くなりますが、VBと同様に、キャストしてからメソッドを実行する方法は無いのでしょうか?

object otmp = 123.456;
Double tmp = (Double)otmp;
System.Diagnostics.Debug.Print(tmp.GetType().ToString ());

引用返信 編集キー/
■67174 / inTopicNo.2)  Re[1]: キャストしたオブジェクトのメソッドを実行するには?
□投稿者/ こりんご (14回)-(2013/07/10(Wed) 19:01:12)
No67173 (bagabon さん) に返信
> 初歩的な質問かも知れませんが、ご存知の方がいましたらご教授下さい。
>
> VBでは以下の記述は問題無く実行できます。
> Dim otmp As Object = 123.456
> Debug.Print(CType(otmp, Double).GetType().ToString())
>
>
> C#で同じことをしようとすると次のエラーメッセージが出ます。
> 「型'string'を型'double'に変換できません」
> エラーメッセージから察するに、C#の場合は、メソッドを実行してからキャストしようとしています。
> object otmp = 123.456;
> System.Diagnostics.Debug.Print((Double)otmp.GetType().ToString ());

object otmp = 123.456;
System.Diagnostics.Debug.Print(((Double)otmp).GetType().ToString());

こうゆう事とは違います?

引用返信 編集キー/
■67175 / inTopicNo.3)  Re[2]: キャストしたオブジェクトのメソッドを実行するには?
□投稿者/ tinq (3回)-(2013/07/10(Wed) 19:51:52)
キャスト演算子はメンバーアクセスより優先順位が低いので、こりんごさんのように括弧をつける必要があります。
演算子の優先順位は以下あたりが参考になります。
http://msdn.microsoft.com/ja-jp/library/aa691323(v=vs.71).aspx
http://ufcpp.net/study/csharp/list_expression.html

引用返信 編集キー/
■67176 / inTopicNo.4)  Re[3]: キャストしたオブジェクトのメソッドを実行するには?
□投稿者/ bagabon (5回)-(2013/07/10(Wed) 20:01:40)
No67175 (tinq さん) に返信
こりんごさん、tinqさん
ご返事ありがとうございます。

ご指摘の通り、(Double)otmp ->((Double)otmp)と括弧をつけることで解決しました。

どうもありがとうございます。


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


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

このトピックに書きこむ

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

管理者用

- Child Tree -