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}");
}
}
}

コメント