Hatena::Diary

2009-06-10

型推論で記述してみた。

   '本来はこうしたかった。
        Dim c = Convert.ToInt32("AB", 16)
        Console.WriteLine(c)

型推論で遊んでみた。

        Dim i = "d"
        Dim str_g = CStr(i)
        Dim con_er = Convert.ToInt32(i, 16)
        Console.WriteLine(c & "となります。")
        '16進数から10進数へ
        '実行結果:13となります。

        Dim i = 15
        Dim y = CInt(i)
        Dim con_er = Convert.ToString(Convert.ToInt32(i), 16)
        Console.WriteLine(con_er & "となります。")
        '10進数から16進数へ
        ''実行結果:fとなります。

なんか型ないと変な感じ。

勉強中なので間違ってたらばんばんアドバイスください。

KK 2009/06/10 20:58 > VisualBasic2005,2008

2008はわかりますが、2005で?
オブジェクト階層ツリー上最上位のSystem.Objectの恩恵と型推論を混同していませんか?

n_saito1111n_saito1111 2009/06/10 21:08 カテゴリを昔設定したままにしてましたΣ
帰ったら直しますっ

KK 2009/06/10 21:19 付け加えです。

> Dim i = "d"
この時点でiはSystem.String。

> Dim str_g = CStr(i)
なぜSystem.Stringの変数iに対してCStr?

> Dim con_er = Convert.ToInt32(i, 16)
そんでもって、str_gは結局使われていない・・・?

> Console.WriteLine(c & "となります。")
2つ目のコードに関しては、変数cは定義されていないような・・・

> Dim i = 15
こちらもこの時点でiはSystem.Int32。

> Dim y = CInt(i)
System.Int32型の変数iに対してCInt?

> Dim con_er = Convert.ToString(Convert.ToInt32(i), 16)
そして変数yは使ってないんですね。うーん、なんだろう?
それと、ここでの変数iはToInt32しなくても、もともとSystem.Int32っすよね。

うーん、老婆心ながらn_saito1111さんの意図どおりのサンプルなのかなーという気が・・・

> '本来はこうしたかった。
> Dim c = Convert.ToInt32("AB", 16)
> Console.WriteLine(c)
本来もなにも2008ならこれもローカル型推論に当たるんじゃないでしょうか?
VBは門外漢なのであまり詳しくありませんので、ちょっと少し自信がないですが。

あ、ひとつ前の投稿の
>>オブジェクト階層ツリー上最上位のSystem.Objectの恩恵と型推論を混同していませんか?
プラス、遅延バインドの恩恵ですね。Option StrictをOnにすると2005では多分エラーになるんで。
これに関してはカテゴリの設定ミスのようなので、結果的に無用な突っ込みでしたね。ごめんなさい。

n_saito1111n_saito1111 2009/06/10 22:28 おはぁwww全体的にコメント読んで
>この時点でiはSystem.String。
うんうん、””なので文字列なのはわかっていました。
つっこみありがとうございます。雑談つっこみもすきですが、こうゆうのも好きです。
>Option StrictをOnにすると
うーん、私がコンソールで書いたときはOption StrictをOnにしたんですけどねぇ...
一服すったらまたちょっと書いてみます。なんかゆっくり自分の書いたのみると全体的に
おかしい気もしてきました。

n_saito1111n_saito1111 2009/06/10 22:58 Module Module1

Sub Main()

Dim i = 10
Dim y = Convert.ToString(Convert.ToUInt32(i), 16)
Console.WriteLine(y)

End Sub

End Module

うん、なんで私Cint関数とCstr関数使っていたんだろう・・・・
うーーーーーん><

n_saito1111n_saito1111 2009/06/10 23:03 >Dim y = Convert.ToString(Convert.ToUInt32(i), 16)
ぶっwまた同じことしてた。
iがConvert.ToUInt32なのに。おちつけ私w

KK 2009/06/10 23:03 そうですね。

> '本来はこうしたかった。
のコードで実は目的を達成できていたんですよね。
時間が時間なのできっと疲れていたのではないですかね?
どんまいですよ。学習する姿勢が大切ですから。

ゲスト


トラックバック - http://d.hatena.ne.jp/n_saito1111/20090610/1244633490