Pertanyaan Metode Statis dari Kelas Statis vs. Metode Statis dari Kelas Non-Statik (C #)


Saya ditanya pertanyaan di atas dalam sebuah wawancara. Bisakah Anda jelaskan perbedaannya? (kinerja - memori - penggunaan - kapan menggunakannya?)

Terima kasih,

Erkan


42
2018-02-15 16:33


asal


Jawaban:


Mendeklarasikan kelas statis mendokumentasikan maksud Anda agar kelas tersebut menjadi kumpulan fungsi statis, dan siapa pun yang menambahkan anggota instance akan mendapatkan kesalahan kompilasi.

Kelas non-statis dengan anggota statis biasanya menunjukkan bahwa kelas dirancang untuk dipakai di beberapa titik. Metode statis kelas-kelas ini biasanya melakukan salah satu dari dua hal:

  1. Berikan metode pabrik untuk membuat turunan dari jenis itu;
  2. Menyediakan fungsi pembantu yang tidak memerlukan instance dari jenis;

Juga, seperti yang disebutkan sebelumnya, metode penyuluhan hanya dapat dideklarasikan pada kelas statis.


44
2018-02-15 16:43



Saya berasumsi Anda diminta untuk perbedaan?

Metode statis pada kelas statis dapat digunakan untuk menentukan metode ekstensi. Metode statis pada kelas non-statis tidak bisa.


18
2018-02-15 16:34



Dalam hal kinerja dan penggunaan memori; tepatnya tidak ada apa-apa. Memiliki kelas statis berarti Anda tahu tidak ada contoh, tetapi kembali ke 1.1 memiliki konstruktor pribadi sudah mencukupi. Gunakan kelas statis jika tidak masuk akal untuk memiliki sebuah instance! (kelas utilitas dll)


15
2018-02-15 16:37



Ketika Anda menyediakan fungsi utilitas dan semua metode Anda statis, saya sarankan Anda menggunakan metode statis dalam kelas statis.

Ketika Anda ingin memberikan metode utilitas yang hanya menangani instance Anda, saya sarankan Anda menggunakan metode statis dalam kelas non-statis. Sebagai contoh:

var myClass = MyClass.Create();
var myClass = MyClass.Parse("serialized.MyClass");

6
2018-02-15 16:40



Satu perbedaan utama yang saya hadapi ketika memutuskan apakah akan pergi dengan kelas normal dengan semua metode statis atau, menggunakan kelas statis, adalah bahwa kelas normal mendukung implementasi antarmuka, sedangkan kelas statis tidak. Saya hanya menggunakan kelas statis ketika saya yakin itu akan menjadi kumpulan fungsi statis (biasanya fungsi pembantu), dan tidak akan pernah berada di aliran utama program. Saya mempromosikan pemrograman antarmuka, untuk suntikan ketergantungan, pengujian unit dll. Jadi, untuk aliran utama program, saya menggunakan kelas normal dengan metode statis.


-1
2018-06-09 16:13