Saya telah mencari tentang variabel statis di C #, tetapi saya masih belum mengerti apa kegunaannya. Juga, jika saya mencoba mendeklarasikan variabel di dalam metode itu tidak akan memberi saya izin untuk melakukan ini. Mengapa?
Saya telah melihat beberapa contoh tentang variabel statis. Saya telah melihat bahwa kita tidak perlu membuat instance kelas untuk mengakses variabel, tetapi itu tidak cukup untuk memahami apa kegunaannya dan kapan menggunakannya.
Hal kedua
class Book
{
public static int myInt = 0;
}
public class Exercise
{
static void Main()
{
Book book = new Book();
Console.WriteLine(book.myInt); // Shows error. Why does it show me error?
// Can't I access the static variable
// by making the instance of a class?
Console.ReadKey();
}
}
c#
static
static-variables
Kartik Patel
sumber
sumber
Book
) no melalui sebuah instance (book
), jadi solusi yang lebih mudah adalahBook.myInt
.Jawaban:
Sebuah
static
variabel berbagi nilai itu antara semua contoh kelas.Contoh tanpa mendeklarasikannya statis:
Penjelasan: Jika Anda melihat contoh di atas, saya baru saja mendeklarasikan
int
variabelnya. Ketika saya menjalankan kode ini, hasilnya akan menjadi10
dan10
. Itu mudah.Sekarang mari kita lihat variabel statis di sini; Saya mendeklarasikan variabel sebagai
static
.Contoh dengan variabel statis:
Sekarang ketika saya menjalankan kode di atas, hasilnya akan menjadi
10
dan15
. Jadi nilai variabel statis dibagikan di antara semua instance kelas itu.sumber
C # tidak memiliki variabel statis sama sekali. Anda dapat mendeklarasikan bidang statis dalam definisi tipe tertentu melalui C #. Bidang statis adalah suatu keadaan, dibagi dengan semua contoh tipe tertentu. Oleh karena itu, ruang lingkup bidang statis adalah seluruh tipe. Itulah mengapa Anda tidak dapat mendeklarasikan bidang statis dalam suatu metode - metode adalah cakupannya sendiri, dan item yang dideklarasikan dalam suatu metode harus tidak dapat diakses melalui perbatasan metode.
sumber
variabel statis digunakan ketika hanya satu salinan variabel yang diperlukan. jadi jika Anda mendeklarasikan variabel di dalam metode, tidak ada penggunaan variabel seperti itu menjadi hanya berfungsi lokal ..
contoh statis adalah
Variabel yang dinyatakan statis biasanya dibagikan di semua instance kelas.
Variabel yang dinyatakan statis biasanya dibagikan di semua instance kelas. Saat Anda membuat beberapa instance kelas VariableTest Variabel permanen ini digunakan bersama di semua instance. Jadi, pada suatu titik waktu tertentu, hanya akan ada satu nilai string yang terkandung dalam variabel permanen.
Karena hanya ada satu salinan variabel yang tersedia untuk semua instance, kode this.permament akan menghasilkan kesalahan kompilasi karena dapat diingat bahwa this.variablename merujuk ke nama variabel instance. Jadi, variabel statis harus diakses secara langsung, seperti yang ditunjukkan dalam kode.
sumber
Beberapa contoh "dunia nyata" untuk variabel statis:
membangun kelas tempat Anda dapat mencapai nilai hardcode untuk aplikasi Anda. Mirip dengan enumerasi, tetapi dengan lebih banyak fleksibilitas pada tipe data.
Singleton yang dikenal luas, ini memungkinkan kontrol untuk memiliki tepat satu instance kelas. Ini sangat berguna jika Anda ingin mengaksesnya di seluruh aplikasi Anda, tetapi tidak meneruskannya ke setiap kelas hanya untuk mengizinkan kelas ini menggunakannya.
dan ini adalah bagaimana Anda akan memanggil manajer tekstur
Tentang pertanyaan terakhir Anda: Anda mengacu pada kesalahan kompiler CS0176 . Saya mencoba menemukan informasi lebih lanjut tentang itu, tetapi hanya dapat menemukan apa yang dikatakan msdn tentang itu:
sumber
Variabel statis digunakan ketika hanya satu salinan yang diperlukan. Izinkan saya menjelaskan ini dengan sebuah contoh:
Sekarang di sini kita telah membuat 2 contoh untuk
class
lingkaran kita , yaitu 2 set salinan_PI
bersama dengan variabel lain dibuat. Jadi katakanlah jika kita memiliki banyak instance dari kelas ini, beberapa salinan_PI
akan dibuat menggunakan memori. Jadi dalam kasus seperti itu, lebih baik membuat variabel seperti itu menyukai_PI
static
dan mengoperasikannya.Sekarang tidak peduli berapa banyak contoh dibuat untuk
class
lingkaran, hanya ada satu salinan variabel yang_PI
menyimpan memori kita.sumber
Kelas statis tidak mengharuskan Anda untuk membuat objek dari kelas itu / membuat instance dari kelas itu, Anda dapat mengawali kata kunci C # statis di depan nama kelas, untuk membuatnya statis.
Ingat: kami tidak membuat instance kelas Console, kelas String, Kelas Array.
sumber
Berawal dari contoh @Kartik Patel ini, saya telah sedikit merubah mungkin sekarang lebih jelas tentang variabel statis
Variabel Kelas VS Variabel Instans di C #
Anggota Kelas Statis C # ATAU Variabel Kelas
}
https://en.wikipedia.org/wiki/Class_variable
https://en.wikipedia.org/wiki/Instance_variable
https://en.wikipedia.org/wiki/Static_variable
https://javaconceptoftheday.com/class-variables-and-instance-variables-in-java/?fbclid=IwAR1_dtpHzg3bC5WlGQGdgewaTvuOI6cwVeFUtTV8IZuGTj1qH5PmKGwX0yM
https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/static-classes-and-static-class-members
Anggota data dan anggota fungsi yang beroperasi pada instance tipe disebut anggota instance. Metode ToString int (misalnya) adalah contoh anggota instance. Secara default, anggota adalah anggota instance. Anggota data dan anggota fungsi yang tidak beroperasi pada contoh tipe, melainkan pada tipe itu sendiri, harus ditandai sebagai statis. Metode Test.Main dan Console.WriteLine adalah metode statis. Kelas Console sebenarnya adalah kelas statis, yang berarti semua anggotanya statis. Anda tidak pernah benar-benar membuat instance Konsol — satu konsol dibagikan di seluruh aplikasi.
sumber
Menanggapi pertanyaan "kapan menggunakannya?" pertanyaan:
Saya sering menggunakan variabel statis (kelas) untuk menetapkan ID instance unik ke setiap instance kelas. Saya menggunakan kode yang sama di setiap kelas, sangat sederhana:
Ini menggambarkan beberapa poin tentang variabel dan metode statis:
Saya menemukan ini berguna karena saya mengembangkan aplikasi di mana kawanan objek digunakan dan itu bagus untuk dapat melacak berapa banyak yang telah dibuat, dan untuk melacak / query contoh individu.
Saya juga menggunakan variabel kelas untuk melacak hal-hal seperti total dan rata-rata properti dari instance yang dapat dilaporkan secara real time. Saya pikir kelas adalah tempat yang baik untuk menyimpan informasi ringkasan tentang semua contoh kelas.
sumber
Coba panggil langsung dengan nama kelas
Book.myInt
sumber
Dibandingkan dengan variabel sesi, variabel statis akan memiliki nilai yang sama untuk semua pengguna mengingat saya menggunakan aplikasi yang ditempatkan di server. Jika dua pengguna mengakses halaman yang sama dari suatu aplikasi maka variabel statis akan menyimpan nilai terbaru dan nilai yang sama akan diberikan kepada kedua pengguna tidak seperti variabel sesi yang berbeda untuk setiap pengguna. Jadi, jika Anda menginginkan sesuatu yang umum dan sama untuk semua pengguna termasuk nilai yang seharusnya digunakan bersama kode aplikasi, maka hanya gunakan statis.
sumber
Anda tidak perlu membuat instance objek, karena Anda akan menggunakan variabel statis: Console.WriteLine (Book.myInt);
sumber
Variabel statis mempertahankan nilai sebelumnya sampai program keluar. Statis digunakan dengan memanggil langsung class_Name.Method () atau class_Name.Property. Tidak diperlukan referensi objek. Penggunaan statik yang paling populer adalah kelas Matematika C #. Math.Sin (), Math.Cos (), Math.Sqrt ().
sumber