C#中为什么SetTime空函数中不是hour=h

问题遇到的现象和发生背景
class Time
{
    private int hour;
    private int minute;
    private int second;
    private void SetTime(int h,int m,int s) 
    {
        Hour = h;
        Minute = m;
        Second = s;
    }
    public Time() 
    {
        SetTime(0,0,0);
    }
    public Time(int hourValue) 
    {
        SetTime(hourValue, 0, 0);
    }
    public Time(int hourVlaue,int minuteValue,int secondValue) 
    {
        SetTime(hourVlaue ,minuteValue ,secondValue );
    }
    public int Hour //为什么不直接用小写的hour
    {
        get { return hour; }
        set { hour = (value >= 0 && value < 24 ? value : 0); }
    }
    public int Minute
    {
        get { return minute ; }
        set { minute  = (value >= 0 && value < 60? value : 0); }
    }
    public int Second
    {
        get { return second ; }
        set { second = (value >= 0 && value < 60 ? value : 0); }
    }
    public string ToString12() 
    {
        int hourTemp = (Hour < 12) && (Hour > 0) ? 12 : (Hour % 12);
        string AMPM = (Hour < 12 ? "AM" : "PM") ;
        string outPut = hourTemp + ":" + Minute + ":" + Second+AMPM;
        return outPut;
    }

}
class Program
{
    static void Main(string[] args)
    {
        Time time1 = new Time();
        Time time2 = new Time(22);
        Time time3 = new Time(22,36,30);
        Console.WriteLine("time3:");
        Console.WriteLine("12小时制:"+time3.ToString12 ());
    }

public int Hour //为什么不直接用小写的hour
{
get { return hour; }
set { hour = (value >= 0 && value < 24 ? value : 0); }
}
这个是属性,小写的是内部变量。他俩是2个概念,但不能重名

属性可以通过
time1.Hour=2
int a=time1.Hour
来进行赋值和获取

private习惯在前面加下划线,避免与内部变量冲突
private int _hour