Bagaimana cara mendeklarasikan variabel sehingga setiap kelas (* .cs) dapat mengakses isinya, tanpa referensi instance?
101
Dalam C#
Anda tidak dapat mendefinisikan variabel global yang sebenarnya (dalam arti bahwa mereka tidak termasuk dalam kelas apa pun).
Karena itu, pendekatan paling sederhana yang saya tahu untuk meniru fitur ini terdiri dari penggunaan a static class
, sebagai berikut:
public static class Globals
{
public const Int32 BUFFER_SIZE = 512; // Unmodifiable
public static String FILE_NAME = "Output.txt"; // Modifiable
public static readonly String CODE_PREFIX = "US-"; // Unmodifiable
}
Anda kemudian dapat mengambil nilai yang ditentukan di mana saja di kode Anda (asalkan itu bagian dari yang sama namespace
):
String code = Globals.CODE_PREFIX + value.ToString();
Untuk menangani ruang nama yang berbeda, Anda dapat:
Globals
kelas tanpa menyertakannya ke dalam suatu spesifik namespace
(sehingga itu akan ditempatkan di namespace aplikasi global);namespace
.
Tidak ada variabel global di C #. Titik.
Anda dapat memiliki anggota statis jika Anda ingin:
sumber
static
contoh yang Anda berikan tidak dapat benar-benar dianggap sebagai variabel global.Pertama, periksa apakah Anda benar-benar membutuhkan variabel global daripada menggunakannya secara terang-terangan tanpa mempertimbangkan arsitektur perangkat lunak Anda.
Mari kita asumsikan lulus ujian. Bergantung pada penggunaan, Globals mungkin sulit untuk di-debug dengan kondisi balapan dan banyak "hal buruk" lainnya, yang terbaik adalah mendekatinya dari sudut di mana Anda siap untuk menangani hal-hal buruk seperti itu. Begitu,
static
kelas (untuk pengelolaan).Garis besar dasar untuk kelas seperti itu adalah:
Penggunaan dari kelas lain (dalam namespace yang sama)
sumber
Fitur yang berguna untuk ini adalah
using static
Seperti yang dikatakan orang lain, Anda harus membuat kelas untuk global Anda:
Tetapi Anda dapat mengimpornya seperti ini agar tidak lagi menulis nama kelas di depan properti statisnya:
sumber