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

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

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

.NETとは、主に.NET Frameworkと呼ばれるアプリケーションまたは開発環境を指します。CLR(共通言語ランタイム)を搭載し、入力された言語をCIL(共通中間言語)に変換・実行することが可能です。そのため、C#やPythonなど複数の言語を用いることができます。

Visual Basic .NET

Microsoft Visual Basic .NET (VB.NET)とはオブジェクト志向のプログラム言語です。 Microsoft"s Visual Basic 6 のバージョンアップとしてみることができますが、Microsoft.NET Frameworktによって動かされています。

解決済

.NETのクラスの扱いがわからない。

mokimokio
mokimokio

総合スコア53

.NET

.NETとは、主に.NET Frameworkと呼ばれるアプリケーションまたは開発環境を指します。CLR(共通言語ランタイム)を搭載し、入力された言語をCIL(共通中間言語)に変換・実行することが可能です。そのため、C#やPythonなど複数の言語を用いることができます。

Visual Basic .NET

Microsoft Visual Basic .NET (VB.NET)とはオブジェクト志向のプログラム言語です。 Microsoft"s Visual Basic 6 のバージョンアップとしてみることができますが、Microsoft.NET Frameworktによって動かされています。

1回答

0評価

0クリップ

273閲覧

投稿2022/05/20 03:38

編集2022/05/20 13:43

現在.NETの勉強をしているものです。
Windows Forms アプリを Visual Studio 2019 でフレームワークを .NET Framework 4.7.2 で作っています。

テキストボックス6つを設置し各テキストボックスに500円、百円、五十円、十円、五円、一円の枚数を入力できるようにしました。
ここに各コインの枚数を入力してボタンを押すたびに自分で作ったCoinCaseクラスにそれぞれの種類のコインの枚数を記録して増やしていけるようにしたいと思っています。

そこで下記コードを作成したのですが、なぜかボタンを押すたびにクラス内のdataが初期化されています。
本当はボタンを押すたびに過去の枚数+入力した枚数としていきたいのですが、、、

どなたか解決方法教えてください。よろしくお願いします!

Public Class Form1 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim t500 As Integer = TextBox1.Text Dim t100 As Integer = TextBox2.Text Dim t50 As Integer = TextBox3.Text Dim t10 As Integer = TextBox4.Text Dim t5 As Integer = TextBox5.Text Dim t1 As Integer = TextBox6.Text Dim tyokin10 As New CoinCase tyokin10.AddCoins(t500, t100, t50, t10, t5, t1) Label1.Text = tyokin10.count Label2.Text = tyokin10.data500 Label3.Text = tyokin10.data100 Label4.Text = tyokin10.data50 Label5.Text = tyokin10.data10 Label6.Text = tyokin10.data5 Label7.Text = tyokin10.data1 End Sub End Class Class CoinCase Public Property data500 As Integer Public Property data100 As Integer Public Property data50 As Integer Public Property data10 As Integer Public Property data5 As Integer Public Property data1 As Integer Public Property count As Integer Public Sub AddCoins( dt500count As Integer, dt100count As Integer, dt50count As Integer, dt10count As Integer, dt5count As Integer, dt1count As Integer ) count += 1 data500 += dt500count data100 += dt100count data50 += dt50count data10 += dt10count data5 += dt5count data1 += dt1count End Sub End Class

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

SurferOnWww

2022/05/20 03:43

質問する際は何を何で作っているかを書きましょう。(例: Windows Forms アプリを Visual Studio 2022 でフレームワークを .NET Framework 4.8 として作っています・・・とか)
Zuishin

2022/05/20 03:51

> そこで下記コードを作成したのですが、なぜかボタンを押すたびにクラス内のdataが初期化されています。 コンパイルエラーになりません?
mokimokio

2022/05/20 03:51

ありがとうございます!追記しました!
mokimokio

2022/05/20 03:55

はい、コンパイルエラーにはなっておりません。。。。
SurferOnWww

2022/05/20 03:58 編集

> なぜかボタンを押すたびにクラス内のdataが初期化されています。 というのはコードのボタンクリックイベントのハンドラ Button1_Click で、 Dim tyokin10 As New CoinCase と、ボタンクリックのたび毎回新しいインスタンスを作っているからでは? そのあたりを見なおしてみてはいかがですか?
SurferOnWww

2022/05/20 03:57

> ありがとうございます!追記しました! 見当たりませんが?
Zuishin

2022/05/20 04:04

> Dim t500 As Integer = TextBox1.Text option strict を使わなければこういうことができるんですね。 今書いたのは本題とは関係ないので無視してください。
SurferOnWww

2022/05/20 04:05

> 環境はmicrosoft.NET SDK 5.0.406(x64) from Visual Studio .NET 5.0 ということですか? .NET Framework ではなくて。その情報が重要なんですけど。
mokimokio

2022/05/20 04:08

https://gastec-soft.com/cmcd_200/net_framework_check.html 上記URLの記事を見て実行した結果 書いていたのがmicrosoft.NET SDK 5.0.406(x64) from Visual Studio だったのでそう書きました汗 .NET Frameworkという記載が自分のパソコンにはこの手順の結果にはなかったので、、、
SurferOnWww

2022/05/20 04:24 編集

質問を書き直したようですが、回答が付いた後は絶対に止めてください。話の辻褄が合わなくなりますので。あとからここを訪れた人が上から読んでいった場合、BeatStar さんの回答を見て「何を言ってるの?」ということになります。 どうしても正解を書いておきたいということなら、元の質問はそのままで、追記という形でかつ回答を見て直した結果ということを明記してください。
SurferOnWww

2022/05/20 04:28

今後のために覚えておいてください。 > .NET Frameworkという記載が自分のパソコンにはこの手順の結果にはなかったので、、、 Visual Studio 2019 のテンプレートを使ってプロジェクトを作成したと思いますが、であればその時自分で指定するので分かるはずです。 分からないまま作ってしまったという人も時々いますけど、その場合はソリューションエクスプローラーでプロジェクト名を右クリックして出てくるメニューで「プロパティ」を選んで表示すると、「ターゲットフレームワーク」という項目があるので、それを見てください。
mokimokio

2022/05/20 04:43

コードの修正をもとに戻す。 フレームワークのバージョン明記 ともに修正しました! フレームワークのバージョンの見かたも分かっていなかったので大変助かりました!ありがとうございます!

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

.NET

.NETとは、主に.NET Frameworkと呼ばれるアプリケーションまたは開発環境を指します。CLR(共通言語ランタイム)を搭載し、入力された言語をCIL(共通中間言語)に変換・実行することが可能です。そのため、C#やPythonなど複数の言語を用いることができます。

Visual Basic .NET

Microsoft Visual Basic .NET (VB.NET)とはオブジェクト志向のプログラム言語です。 Microsoft"s Visual Basic 6 のバージョンアップとしてみることができますが、Microsoft.NET Frameworktによって動かされています。