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}");
        }
    }
}
       
  
  
  
  
コメント