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

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

新規登録して質問してみよう
ただいま回答率
85.35%
VB.NET

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

Q&A

解決済

2回答

1365閲覧

VB.NET 変数宣言

fffu8

総合スコア37

VB.NET

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

0グッド

0クリップ

投稿2020/03/10 05:46

編集2020/03/10 05:55

以下の文には、Totalの変数宣言がありません。書き方を教えて頂けたらと思います。

Module Module1

Sub Main() '配列の宣言と初期化 Dim array1 As Integer() = {3, 5, 2, 7, 8, 3, 9, 6} Dim array2 As Integer() = {12, 24, 63, 11, 29} Dim array3 As Integer() = {1251, 3567, 9399, 6241} '変数に情報を代入 Dim total1 As Integer = Total(array1) Dim total2 As Integer = Total(array2) Dim total3 As Integer = Total(array3) '表示 Console.WriteLine("arrayの合計は" + CStr(total1) + "です。") Console.WriteLine("arrayの合計は" + CStr(total2) + "です。") Console.WriteLine("arrayの合計は" + CStr(total3) + "です。") Console.ReadLine() End Sub 'Total作成 Private Function Total(ByVal array As Integer()) As Integer For i As Integer = 0 To array.Length - 1 'Totalにarray(i)を足す Total = Total + array(i) Next i Return Total End Function

End Module

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

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

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

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

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

guest

回答2

0

ベストアンサー

VBの場合、Functionの場合に値を返す為の変数が暗黙で関数名で定義されます。
今回の場合ですとTotalですね。

実際に下記のようなコードを書くと
「ローカル変数に、それを含む関数と同じ名前を指定することはできません。」
とエラーになりますが、分かりやすく記述するとすれば以下のような感じです。

VBNET

1Private Function Total(ByVal array As Integer()) As Integer 2 Dim Total As Integer 'これが暗黙で宣言されるような感じです 3 4 For i As Integer = 0 To array.Length - 1 5 'Totalにarray(i)を足す 6 Total = Total + array(i) 7 Next i 8 9 Return Total 10 11End Function

ですので、今回提示されたコードはエラーも出ず、実行することが可能です。
ただ、上司ということは会社組織でしょうから、そちらで定められているコーディング規約というものがあるかと思いますのでそちらに反しているのかもしれません。
そうなのであるとすれば、Totalという変数名ではなく、別の名前で宣言して使用するといいでしょう。

投稿2020/03/10 06:14

編集2020/03/10 06:21
YAmaGNZ

総合スコア10489

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

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

fffu8

2020/03/10 06:43

プロシージャと同じ名前で波線がでています。どうように直したらいいですか?
fffu8

2020/03/10 06:49

すみません解決しました。
guest

0

Private Function Total(ByVal array As Integer()) As Integer

で宣言されています。

投稿2020/03/10 06:01

otn

総合スコア85901

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

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

fffu8

2020/03/10 06:06

そうですよね。上司にTotalの変数宣言がないと言われ、どこをどのように修正したらいいのかわからなくて。
fffu8

2020/03/10 06:10

どこか他追加しないといけない所はないですか?
otn

2020/03/10 06:14

よくみると「Return Total」がありますね。 これは書かないか、 和を関数名に代入するのでなく、別途変数宣言した変数に和を入れて「return その変数」でしょうか。
YAmaGNZ

2020/03/10 06:29

returnを省略する場合、現状のTotal関数ではTotalを初期化していないのでエラーとなります。省略する場合 Private Function Total(ByVal array As Integer()) As Integer Total = 0 For i As Integer = 0 To array.Length - 1 'Totalにarray(i)を足す Total = Total + array(i) Next i End Function としないといけません。
fffu8

2020/03/10 06:31

上司から、 Total見てもらうと変数の宣言がないのです。 VB.NETは昔のVBの影響を受けていて、プロシージャーの名前に代入するとReturnと同じになります。 どおゆうことですか?
otn

2020/03/10 06:37

確かに初期化が漏れてますね。
fffu8

2020/03/10 06:42

Dim Total As Integer = 0を入れるとプロシージャの名前と同じと言われました。どうなおせばいいですか?
fffu8

2020/03/10 06:49

すみません解決しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問