DOBON.NETプログラミング道掲示板

[ 最新記事及び返信フォームをトピックトップへ ]

■34926 / inTopicNo.1)  C#をVBに変換する方法が分かりません
  
□投稿者/ みならい 一般人(1回)-(2021/09/24(Fri) 08:33:30)
  • アイコン環境/言語:[Windows10 VisualStudio2019 VB.net WindowsForm] 
    分類:[.NET] 

    次のコードをVBに変換したいのですが、どのようにすればいいのか?
    よく分かりません。Usingステートメントなのでしょうか?

    using (var stream = req.GetRequestStream())
    {
    stream.Write(data, 0, data.Length);
    }

    using (var stream = resLog.GetResponseStream())
    using (var sr = new StreamReader(stream, Encoding.GetEncoding("euc-jp")))
    {
    Console.WriteLine(sr.ReadToEnd()); // アクセスできてるのを確認
    }

マルチポストを報告
違反を報告
引用返信 削除キー/
■34927 / inTopicNo.2)  Re[1]: C#をVBに変換する方法が分かりません
□投稿者/ 魔界の仮面弁士 大御所(1402回)-(2021/09/24(Fri) 09:22:27)
  • アイコン2021/09/24(Fri) 11:07:46 編集(投稿者)

    No34926に返信(みならいさんの記事)
    > 次のコードをVBに変換したいのですが、どのようにすればいいのか?
    C# 固有の表現があるわけでも無いですし、そのまま直訳で
    VB に翻訳できそうに見えますが、まずは変換するにあたり、
    どの点が問題になったのかを説明して頂けますか?

    たとえば、コード中で利用されている変数のうち、
    req と data と resLog が何であるかは質問文中で語られていません。
    これらが何であるか、質問前に確認されていますか?

    とりあえず req が GetRequestStream メソッドを持っていることから推察して
     System.Net.FtpWebRequest クラス
     System.Net.HttpWebRequest クラス
     System.Net.WebRequest クラス
    あたりのいずれかではないかと想像してみますが、具体的にそれが
    何であるかを判断できるのは、質問者であるみならいさんだけです。


    > よく分かりません。Usingステートメントなのでしょうか?
    プロジェクトのプロパティの[参照設定]タブの[インポートされた名前空間]で
     System
     System.IO
     System.Text
    にチェックが付いているか確認しておきましょう。

    あるいは「インポートされた名前空間」でプロジェクト全体に加えるのではなく、
    個々の .vb ファイルの先頭に、Imports ステートメントで宣言することもできます。


    > using (var stream = req.GetRequestStream())
    > {
    >   stream.Write(data, 0, data.Length);
    > }
    そのまま VB に変換すると、こうですね。

    Using stream = req.GetRequestStream()
     stream.Write(data, 0, data.Length)
    End Using

    ただし C# と違って、VB では大文字小文字が区別されないため、
    stream 変数と Stream クラスの違いが分かりにくくなります。
    文脈で判断されるためエラーにはなりませんが、区別できるよう変数名を変えて

    Using reqStream = req.GetRequestStream()
     reqStream.Write(data, 0, data.Length)
    End Using

    などとした方が無難かもしれません。
    なお、ここで使う変数 data は、初期化済みの一次元 Byte 配列です。


    > using (var stream = resLog.GetResponseStream())
    > using (var sr = new StreamReader(stream, Encoding.GetEncoding("euc-jp")))
    > {
    >   Console.WriteLine(sr.ReadToEnd()); // アクセスできてるのを確認
    > }

    これは 2 つの書き方があります。
    ひとつは Using を入れ子にする記法。

    Using stream = resLog.GetResponseStream()
     Using sr = New StreamReader(stream, Encoding.GetEncoding("euc-jp")))
      Console.WriteLine(sr.ReadToEnd()) 'アクセスできてるのを確認
     End Using
    End Using

    もうひとつは、Using で 2 つの変数を並べる記法です。

    Using stream = resLog.GetResponseStream(), sr = New StreamReader(stream, Encoding.GetEncoding("euc-jp"))
     Console.WriteLine(sr.ReadToEnd()) 'アクセスできてるのを確認
    End Using
違反を報告
引用返信 削除キー/



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

このトピックに書きこむ

Mode/  Pass/


- Child Tree -