ドットインストールでC#入門をやっています。
今は static修飾子の章をやっているのですが、サンプルスクリプトで理解できない箇所があります。
ドットインストールのC#入門は質問を受け付けていないので、こちらに投稿してみました。
説明いただけると大変助かります。
▼サンプルスクリプト
using System; // static class User { private static int count = 0; public User() { User.count++; } public static void GetCount() { Console.WriteLine($"# of instances: {count}"); } } class MyApp { static void Main () { User.GetCount(); User user1 = new User(); User user2 = new User(); User user3 = new User(); User.GetCount(); } }
▼コンソール結果
# of instances: 0 # of instances: 3
■ ひっかかっている箇所
User.count++;
これはcount(ここではインスタンスの数)に1を足すという意味なので
コンソール結果は
# of instances: 1 // count++で初期値0に1が足されるから # of instances: 4 // count++でインスタンス数3つに1が足されるから
になるのではないでしょうか?
++で1を足しているのに、どうして結果が初期値0と作成されたインスタンス数の3つなのかがわかりません。
C#入門については「このレッスンは視聴可能ですが、質問の受付や内容の更新は終了しております。」となっており、動画視聴とソースコピーはできますが、有料登録していても、質問はできません。(アーカイブされていない他の講座は質問可能です)
質問の前に、まずは自分でデバッグして動きを確認しましょう。
[Visual Studio デバッガーでコード間を移動する]
https://docs.microsoft.com/ja-jp/visualstudio/debugger/navigating-through-code-with-the-debugger?view=vs-2019
[超初心者でもわかるデバッグ方法]
https://docs.microsoft.com/ja-jp/visualstudio/debugger/debugging-absolute-beginners?view=vs-2019&tabs=csharp
[質問するときのヒント]
https://teratail.com/help/question-tips
> 1-1. teratailはサポートセンターではなく、思考するエンジニアの為のQ&Aコミュニティです
> teratailを「サポートセンター」だとは思わないでください。
> 作業依頼のような投稿をして、課題や仕事を無償でやってもらえる場ではありません。
> あなたがそのようなつもりで質問しているのだと他のユーザーから誤解されないように、丁寧な質問を心がけましょう。
思考するエンジニアの為のQ&Aコミュニティです、と書かれているように、無料で初歩から丁寧に教えるような用途のサイトではないので、基礎から段階を踏んだ学習をするなら、入門書を購入して一通り内容をこなしたり、MicrosoftのC#リファレンスを読んだり、メンターサイト等を利用して指導を受けた方がよいと思います。
回答4件
あなたの回答
tips
プレビュー