Saya pikir bagian yang membingungkan adalah bahwa jika Anda menulis int Property { get; set; }
di dalam kelas, maka itu adalah properti otomatis dengan bidang dukungan implisit.
Tetapi jika Anda menulis hal yang persis sama dalam sebuah antarmuka, maka itu bukan properti otomatis , itu hanya menyatakan bahwa properti adalah bagian dari antarmuka dan bahwa semua jenis yang mengimplementasikan antarmuka harus mengandung properti itu (sebagai properti otomatis atau tidak ), tetapi tidak membuat bidang dukungan.
Salah satu cara untuk melihat perbedaannya adalah dengan menulis int Property { get; }
: ini valid di antarmuka dan menyatakan properti yang hanya memiliki pengambil, tetapi tidak ada penyetel. Tetapi itu tidak akan dikompilasi di kelas (kecuali jika Anda menggunakan C # 6.0), karena properti otomatis harus memiliki setter.