Javaとの違いに注目しながらクラスを作ってみよう。
●Person.cs
using System; namespace ClassLesson { public class Person { private string name; private int age; //プロパティ public string Name { set { this.name = value; } get { return this.name; } } public int Age { set { this.age = value; } get { return this.age; } } public void ShowInfo() { Console.WriteLine($"名前:{this.name},年齢:{this.age}"); } } }
●Program.cs
using System; namespace ClassLesson { class Program { static void Main(string[] args) { //オブジェクト初期化子で初期化 Person person = new Person() { Name = "山田", Age = 18 }; Console.WriteLine(person.Name); Console.WriteLine(++person.Age); person.ShowInfo(); } } }
プロパティにアクセス制限
using System; namespace ClassLesson { public class Person { private string name; private int age; //コンストラクタ public Person(string name){ this.name = name; } public Person(string name, int age):this(name) { this.age = age; } //プロパティ public string Name { set { this.name = value; } get { return this.name; } } public int Age { //setterをprivateにする private set { this.age = value; } get { return this.age; } } public void AgePlus() { this.age++; } public void ShowInfo() { Console.WriteLine($"名前:{this.name},年齢:{this.age}"); } } }
using System; namespace ClassLesson { class Program { static void Main(string[] args) { //コンストラクタで初期化 Person person = new Person("田中", 18); Console.WriteLine(person.Name); // person.Age++; person.AgePlus(); Console.WriteLine(person.Age); } } }
setter,getterで特にやる処理がない場合は自動プロパティが便利
using System; namespace ClassLesson { public class Person { //自動プロパティ public string Name { get; set; } //初期値も指定できる //public string Name { get; set; } = "ごんべ"; public int Age { get; set; } public void ShowInfo() { Console.WriteLine($"名前:{this.Name},年齢:{this.Age}"); } } }
コメント