質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

3回答

2577閲覧

C#.NETから、VB.NETへの変換

yuujiMotoki

総合スコア90

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

1クリップ

投稿2020/04/12 00:08

#C#からVB.NETにコード変換
マクロサイトで変換したのですが、いくつかエラーが出ています。

#using
これはUSINGを連続させている部分ですが、VBの場合はどのような記載になりますか?
そもそも入れ子のUSINGというのは、C#ではありますが、VBではEND USINGが要求されます。

c#

1 using (Mat target = Cv2.ImRead(targetFile)) 2 using (Mat pattern = Cv2.ImRead(patternFile)) 3 using (Mat result = new Mat(new OpenCvSharp.Size(target.Cols, target.Rows), MatType.CV_8UC3)

#ラムダ式
p>=p.xという部分が、うまく置き換えできていません。
ラムダ式なので、これはVBでは使えないのでしょうか?

C#

1 var avgPoint = New Rect 2 { 3 x = points.Min(p >= p.X), 4 y = points.Min(p >= p.Y), 5 Width = points.Max(p >= p.X), 6 Height = points.Max(p >= p.Y) 7 }

VBへの置き換えは、マクロ https://www.dotnetspider.com/convert/Csharp-To-Vb.aspx
を使いました。

すべてにおいて、万能ではないようですが、VB無知なので役には立ちました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2020/04/12 00:13

using はブレースを省いたただの入れ子なのでネストしてください。 ラムダ式は使えます。自動変換できないなら手動で修正してください。
Zuishin

2020/04/12 00:15

今気づきましたが、C# 側が間違っています。まずコンパイルできることを確かめてからコンバートしてください。
len_souko

2020/04/12 03:30

質問に対する回答ではありませんのでこちらに書いておきます https://forest.watch.impress.co.jp/docs/news/1240998.html > 「Visual Basic」は.NET Coreでもサポートを継続 ~ただし、言語としての発展は終わり ということでVBにコンバートするメリットはありません また、今後は.NETの機能追加によるものであるならVBでもなんとかなるかもしれませんが、C#の言語機能(コンパイラが頑張る部分)には追従できなくなりますのでC#からのコンバートもできなくなってしまうかもしれません もしもご自身の勉強目的の場合はVBは切り捨てで良いと思います もしもお仕事でC#からVBへのコンバートであるのなら、PLにVBの将来はないよという話をした方がいいかもしれません。未来で再びVBからC#への再コンバートを行う事態になるかもしれませんので・・・
退会済みユーザー

退会済みユーザー

2020/04/12 05:21

既存コードの割合が殆どVB.NETだったり、納期や開発メンバーのスキルで VB.NETを選択せざるを得ないケースもあるので、 一部だけコンバートというケースもあるにはあります。 新規でVB.NETでスタートするくらいなら、C#かなという話なら同意します。 C#、VB.NET両方触っていますが、VB自体がイベントドリブンを意識して発展した言語なせいか、 イベント関連の記述が楽かつ充実しているので、 UI処理やカスタムコントロール書くときは、まだまだ便利だなと感じます。 DLL化してしまえば、共用にはそこまで支障ないです。 関係ない話ですみません。
guest

回答3

0

Using

普通にネストできます。

C#での

C#

1using (A) 2{ 3 using (B) 4 { 56 } 7}

VBNET

1Using A 2 Using B 34 End Using 5End Using

にあたるので、提示されたC#のコードに{}をつけて表現すれば分かりやすいかと思います。

ラムダ式

ラムダ式 (Visual Basic)
こちらにあるように

VBNET

1Dim func = Function(p) p.X

という感じでラムダ式を書けます。

投稿2020/04/12 01:20

YAmaGNZ

総合スコア10294

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

自己解決

一瞬VBを勉強しようと思いましたが、VBAとあまりに違うので、
いっそのことC#で行くことにしました。

投稿2020/04/24 12:48

yuujiMotoki

総合スコア90

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/04/24 13:32

何人かに回答頂いてるみたいですが、長期間放置して全く関係ない方向で自己解決は、さすがに回答した人に失礼じゃないかと思いますよ。過去の質問でも全部自己解決つけてるみたいですが、他の人の回答を全く参考にしなかった、ということでしょうか?でしたら質問しないほうがよいかと思います。
Zuishin

2020/04/24 13:34

プロフィールを見ると結構いい歳なのにねえ。
Zuishin

2020/04/24 13:38

https://teratail.com/questions/255574 > PYTHON、c#に関しては、そこそこ基本的な文法できているという前提で結構です。 虚言壁があるみたいだからあてにならないか。
guest

0

VB.NETの場合、複数のUsingは、カンマ区切りで連結します。

VBNET

1Using fs1 = File.Open("file1", FileMode.Open), 2 fs2 = File.Open("file2", FileMode.Open) 3End Using

ラムダ式とはちょっと違いますが、クラスを宣言時に初期化するなら

VBNET

1Dim rect = New Rectangle() With 2{ 3 .X = 1, 4 .Y = 1, 5 .Width = 100, 6 .Height = 100 7}

こんな感じです。

投稿2020/04/12 03:17

編集2020/04/12 03:39
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問