Kata static
kunci pada anggota dalam banyak bahasa berarti Anda tidak boleh membuat turunan dari kelas itu untuk dapat memiliki akses ke anggota itu. Namun, saya tidak melihat adanya pembenaran untuk membuat seluruh kelas static
. Mengapa dan kapan saya harus membuat kelas static
?
Apa manfaat yang saya dapatkan dari membuat kelas static
? Maksud saya, setelah mendeklarasikan kelas statis, kita harus tetap mendeklarasikan semua anggota yang dia ingin akses tanpa instantiasi, sebagai statis juga.
Ini berarti bahwa misalnya, Math
kelas dapat dinyatakan normal (tidak statis), tanpa mempengaruhi cara pengembang kode. Dengan kata lain, membuat kelas statis atau normal agak transparan bagi pengembang.
c#
class
static-keyword
Saeed Neamati
sumber
sumber
Jawaban:
Itu membuat jelas bagi pengguna bagaimana kelas digunakan. Misalnya, akan menjadi omong kosong untuk menulis kode berikut:
C # tidak harus melarang ini tetapi karena tidak ada gunanya, mungkin juga memberitahu pengguna itu. Orang-orang tertentu (termasuk saya) mematuhi filosofi bahwa bahasa pemrograman (dan API ...) harus seketat mungkin untuk membuat mereka sulit digunakan salah: satu-satunya operasi yang diizinkan adalah mereka yang bermakna dan (mudah-mudahan) benar.
sumber
sealed
di tempat pertama. Saya mengakui bahwa tidak semua orang setuju dengan sentimen ini tetapi komentarnya bukan tempat yang baik untuk membahas hal ini. Tetapi dalam kasusstatic
masalah ini bahkan tidak berpose: Instansiasi tidakSystem.Math
akan pernah masuk akal.Math
kelas sebagai statis tanpa menyatakanMath
kelas sebagai statis, Anda masih dapat menggunakannya, tanpa perlu instantiasi.static
.new Math()
.StackOverflow memiliki diskusi hebat tentang topik ini . Untuk memudahkan referensi, saya akan menyalin dan menempelkannya di sini, atas nama penulisnya, Mark S. Rasmussen :
sumber
Saya terkejut tidak ada orang lain yang menyebutkan bahwa
static
kelas mengizinkan metode ekstensi - dengan aman memperluas tipe yang ada (termasuk menambahkan definisi metode ke antarmuka ) yang bukan milik Anda. Misalnya, apa yang ada di Scaladapat dinyatakan dalam C # as
sumber
Bagi saya, kelas statis (dalam C #) adalah jenis seperti memanggil suatu fungsi.
Sebagai contoh
Saya melewatkan sebuah string dan mendapatkan kembali string. Semuanya terkandung dalam metode itu. Tidak ada akses ke variabel anggota, dll.
Jujur saja, sebagian besar penggunaannya bagi saya adalah untuk mengurangi baris kode:
Kenapa:
Kapan saya bisa melakukan ini:
Jadi, saya akan menggunakan kelas statis dalam kasus-kasus itu, ketika saya ingin melakukan sesuatu tanpa perlu kelas dan berarti lebih sedikit mengetik.
Poin Mark S. valid, tetapi bagi saya jika saya memiliki beberapa metode utilitas lebih mudah untuk berpura-pura saya memanggil fungsi untuk merujuknya sebagai satu baris.
Itu mungkin sederhana, tapi itulah yang saya gunakan
static
.sumber