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

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

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

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

Q&A

解決済

3回答

5083閲覧

クラスの属性がnullになってしまいます

Frage

総合スコア8

C#

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

0グッド

0クリップ

投稿2020/05/08 01:27

編集2020/05/08 04:44

前提・実現したいこと

nullでなく、きちんと引数が反映されるようにするにはどうすればいいでしょうか?
例えば、以下のコードを実行した時、marioと出力されるようにするにはどうすればよいでしょうか?
(勿論、game1.title = "mario";と新たに書けばそうなりますが、それでは根本的な解決にはなりません)
よろしくお願いします。

発生している問題・エラーメッセージ

フィールド 'Games.title' は割り当てられません。常に既定値 null を使用します。

using System; namespace aaa { class Program { static void Main(string[] args) { Game game1 = new Game("mario", "platformer", 120); Console.WriteLine(game1.title); Console.ReadLine(); } } }
// こちらはGameのクラスです。 using System; using System.Collections.Generic; using System.Text; namespace aaa { class Game { public string title; public string genre; public int time; public Game (string aTitle, string aGenre, int aTime) { title = aTitle; genre = aGenre; time = aTime; } } }

上記のコードは、後に書き換えたものです。投稿時のコードはこちらです(class Programの方は変わっていません)。

// こちらはGameのクラスです。 using System; using System.Collections.Generic; using System.Text; namespace aaa { class Game { public string title; public string genre; public int time; public Game (string title, string genre, int time) { } } }

ここに言語名を入力
C#

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2020/05/08 04:08 編集

質問のコードを、最初に書いてあった public Game (string title, string genre, int time) { } から書きなおしましたね? そういうのはダメです。質問と回答のつじつまが合わなくなってしまい、回答者に失礼というだけでなく、あとからこのスレッドを訪れた人には訳が分からなくなってしまいますので。 編集・訂正するのは良いのですが、訂正したことが分かるように書いてください。
退会済みユーザー

退会済みユーザー

2020/05/08 04:09

質問のコードを書き換えたようですが、書き換えた後のコードでも警告が出ると言ってます? ホントですか? 証拠の画像を貼ってもらえませんか?
退会済みユーザー

退会済みユーザー

2020/05/08 04:39

訂正したことが分かるように、後でここを訪れた一般閲覧者が上から読んでいっても話が通じるようにしてください。
退会済みユーザー

退会済みユーザー

2020/05/08 04:47

対応いただきありがとうございました。
guest

回答3

0

y_waiwai さんの回答のコメントに、

こちらの動画ではそのように書いてないのになぜ警告が出ないのか(つまり、結局何が間違っていたのか)、という謎が残ります。

とありましたが、自分が見たら以下のようになってましたが?

イメージ説明

投稿2020/05/08 03:26

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

Frage

2020/05/08 03:38

まずtitle = aTitleなどと同じように書き、その後で同じ変数に書き直しました。 何れの場合も警告は出ました。 因みに警告が出るようになったのは昨日のことで、このコードを書いたのはずっと前のことです。 その時は、動画の通りにtitle = aTitleでも同じ変数titleでも警告は出ませんでしたが、昨日になって突然出るようになりました。
退会済みユーザー

退会済みユーザー

2020/05/08 03:43 編集

何を言っているのでしょう? 話は通じてますか? あなたが質問に書いたコード、 > public Game (string title, string genre, int time) { } の { } の中には何も書いてないというのは認識してますか? 「警告が出るようになったのは昨日」とのことですが昨日自分で { } の中を消してしまったのでは?
Frage

2020/05/08 03:49

上述した通り、aTitleなどの異なる変数を使って、{}内にtitle = aTitleと書いた時も、質問内容のように同じ変数を使って{}内に何も書いてない時も、以前は警告が出ませんでした。 今は、動画の通りに{}内にtitle = aTitleと書いても警告がでます。 質問にこっちを書いた方がよかったですね。失敗しました。
退会済みユーザー

退会済みユーザー

2020/05/08 04:05

質問のコードを書き換えたようですが、書き換えた後のコードでも警告が出ると言ってます? ホントですか? 証拠の画像を貼ってもらえませんか?
Frage

2020/05/08 04:15

いや、出なかったです。 結局今までの問題は何だったのか分かりませんが、取り敢えずこうしておくように丸暗記しておきます。
退会済みユーザー

退会済みユーザー

2020/05/08 04:25

> いや、出なかったです。 それではこのスレッドを上から順に読んでいくと話が全く通じなくなるのは理解できますよね。そういうのはダメです。質問と回答のつじつまが合わなくなってしまい、回答者に失礼というだけでなく、あとからこのスレッドを訪れた人には訳が分からなくなってしまいます。 ここ Teratail のスレッドは質問者さんの Q&A 専用ではなく、技術者同士の情報交換の場所ということで、情報の蓄積も目的にしているようです。 編集・訂正するのは良いのですが、訂正したことが分かるように、後でここを訪れた一般閲覧者が上から読んでいっても話が通じるようにしてください。
fana

2020/05/08 04:25

丸暗記とか言ってないで,基礎をまともに学習すればいいのに. 書いているコードの意味やら出た警告の意味やらそれが出てきた理由等々がわからぬままで今後やっていけるわけないのだし. というか,それらがわかってないなら 何も解決してない と思うのだけど.
Frage

2020/05/08 04:34 編集

あのコードで問題なく出力できたのが勘違いだったと考える他ないとおもいます。 あの時のコードは消えていますが、これよりもずっと複雑なものでしたので、nullでも答えが同じになるようなコードだったかも知れません。それで、{}内に何も書かなくても同じように機能する、と勘違いしてしまったのかと。 丸暗記という言い方は悪かったですね。{}内に何もなければnullになる、と覚えておきます。
退会済みユーザー

退会済みユーザー

2020/05/08 04:39

訂正したことが分かるように、後でここを訪れた一般閲覧者が上から読んでいっても話が通じるようにしてください。
Frage

2020/05/08 04:45

補足しておきましたが如何でしょうか。 初投稿で勝手がわからず、申し訳ありません。
退会済みユーザー

退会済みユーザー

2020/05/08 04:46

対応いただきありがとうございました。
fana

2020/05/08 04:46

> {}内に何もなければnullになる、と覚えておきます そういう姿勢がダメじゃん?と言っているんだけど…… 結果が伴うなら道筋は一つじゃないだろうし,まぁいいや.
Frage

2020/05/08 04:52

ご指摘ありがとうございます。 これからもがきながら徐々に覚えていきます。
guest

0

ベストアンサー

public Game (string title, string mech, int time) { this.title=title; }

ってはなしかな?

投稿2020/05/08 01:35

y_waiwai

総合スコア88042

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

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

Frage

2020/05/08 03:05 編集

ご回答ありがとうございます。 その通りに書いたら警告はでなくなりましたが、コードを書く際に参照にしたこちらの動画ではそのように書いてないのになぜ警告が出ないのか(つまり、結局何が間違っていたのか)、という謎が残ります。 https://youtu.be/Reeefq-Nxkk?list=PLLAZ4kZ9dFpNIBTYHNDrhfE9C-imUXCmk&t=433
y_waiwai

2020/05/08 03:26

クラスの変数titleになにも代入しなければnullになってます だからそのエラーが出ます。 その動画なるものがどういうものか見てないですが、その動画が間違ってるかあなたが間違ったかのどちらかでしょうね。
guest

0

コンストラクタの内容を実装してください.
(引数をメンバに代入すればよいでしょう)

投稿2020/05/08 01:34

fana

総合スコア11996

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

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

Frage

2020/05/08 02:31 編集

ご回答ありがとうございます。 大変申し訳ないのですが、ド素人なので具体的な手順を教えていただけると助かります。 因みに、コードはこちらの動画を参照して書きましたが、こちらの動画では同じような警告は出ておりません。なぜでしょうか。 https://www.youtube.com/watch?v=Reeefq-Nxkk&list=PLLAZ4kZ9dFpNIBTYHNDrhfE9C-imUXCmk&index=26 (2つのクラスで異なる変数名を使うことを試した上で、同じ変数名にしました。)
Frage

2020/05/08 02:58

全部見ましたが、具体的に何が間違っているのでしょうか? 上述した通り、aTitleなどと一度書いて試した上で、titleに変えました(何れにせよnullになります)。 一応、using System.Linq;とusing System.Threading.Tasks;も加えてみましたが駄目でした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問