新しくプログラミング言語を覚えてみた C#編 その3

今日もC#を勉強しようと思います。


https://csharp.sevendays-study.com/day6.html


毎度お世話になっているこちらのサイトからまた真似してみますが、
ファイルを2つ使うようになって最初は混乱しました。。

1つめのコードはこちらで、

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Sample601
{
   class Person
   {
       //  名前(フィールド)
       public string name = "";
       //  年齢(フィールド)
       public int age = 0;
       //  情報の表示(メソッド)
       public void ShowAgeAndName()
       {
           Console.WriteLine("名前:{0} 年齢:{1}", name, age);
       }
       //  情報の設定
       public void SetAgeAndName(string name, int age)
       {
           this.name = name;
           this.age = age;
       }
   }
}


2つ目のコードはこちらです。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Sample601
{
   class Program
   {
       static void Main(string[] args)
       {
           Person p1, p2;
           p1 = new Person();  //  一つ目のPersonクラスのメソッドのインスタンスを生成
           p2 = new Person();  //  二つ目のPersonクラスのメソッドのインスタンスを生成
           p1.name = "山田太郎";   //  フィールドnameに値を代入
           p1.age = 19;            //  フィールドageに値を代入
           p2.SetAgeAndName("佐藤花子", 23);   //  setAgeAndName()メソッドで、nameとageを設定
           //  showAgeAndName()メソッドで、それぞれのインスタンスのnameとageを表示
           p1.ShowAgeAndName();
           p2.ShowAgeAndName();
       }
   }
}


1つ目のコードでは方法を、2つ目のコードでは参照される情報が書かれています。

なので、方法のコードと情報のコードに分けて、方法に合わせて適した情報をもってくる、というコードでした。

最初は1つ目のコードだけで試してみると、Errorが0行目に出てくるので「これがバグか〜」と思っていましたが、よく読んだら2つファイルが必要だったのでしっかりと動きました、、失礼しました。

ファイル名を「Person.cs」にしないと、「マチガッテマスヨ」みたいなコード?が返ってきました。

オブジェクト指向についてとてもわかりやすく書かれているのもとても良いと思いました。

クラス、とオブジェクト(インスタンス)が何かは何個か試していくうちに、だんだん理解できるものだと思いました。

ただ、こちらのコードがうまく作動せず、今のところ困っていました。


1つ目は

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Sample602
{
   class Calc
   {
       //  二つの整数の引数の和を求める
       public int Add(int a,int b){
           return a + b;
       }
       //  三つの整数の引数の和を求める
       public int Add(int a, int b, int c)
       {
           return a + b + c;
       }
   }
}

このコードで、2つ目は


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Sample602
{
   class Program
   {
       static void Main(string[] args)
       {
           Calc calc = new Calc();
           int a = 1,b = 2,c = 3;
           int ans1 = calc.Add(a, b);
           int ans2 = calc.Add(a, b, c);
           Console.WriteLine("{0} + {1} = {2}", a, b, ans1);
           Console.WriteLine("{0} + {1} + {2} = {3}", a, b, c, ans2);
       }
   }
}

このコードです。

先ほどと同じように動くはずなのですが、どうもエラーが出て作動しませんでした。

2つ目のコードで、Program と Main にエラーが出て、すでにSample602はProgramが定義されています、という内容で、???となってしまいました。

本来は簡単な計算式が出るコードなのですが、どうしてうまく動かないのか、おそらく自分が何か勘違いしているので、原因を見つけたいと思います。

いいなと思ったら応援しよう!