2016-04-10 31 views
0

programında c++extern int anything; tam olarak eşittir? Ben 10 sınıftan fazla var ve her bir sınıfta varsayılan değer değiştirmeden bir değişkeni kullanmak istiyorum. eğer bu değişkeni bu sınıftan birine koyarsam, diğer değişkendeki değişkenin değerini değiştiririm fakat diğer sınıf değişken değerleri varsayılan olarak ayarlanmış fakat C++ extern int anything; gibi her bir sınıfta sabit değiştirilmiş değere sahip olmak için harici veya global değişkene ihtiyacım var ama c#C++ extern eşittir C#

+0

C# 'ye ihtiyacınız yok. –

+0

Bunu yapmak için DllImport'a ihtiyacınız var, C++ uygulamasını doğrudan kullanabilirsiniz, bunu kontrol edin - http://stackoverflow.com/questions/5110706/how-does-extern-work-in-c –

+0

Böyle bir özellik yok C# deki extern gibi, C# tamamen nesneye yöneliktir ve küresel deklarasyonları yapamazsınız. Yapmanız gereken tek şey, tüm 10 sınıfınız için bir üst sınıf oluşturmak ve bunun içinde bir statik değişken bildirmektir. Tüm 10 sınıfınızı ebeveyninizden devral – Ram

cevap

1

bir sınıfta ortak bir statik alan veya özellik oluşturmak zorunda kalacak C# global değişken oluşturmak için:

class Globals { 

    public static int AnythingProperty { get; set; } 

    public static int AnythingField; 

} 

Globals sınıf yalnızca statik üyeleri (isim belirtir) o zaman değiştirebilir içeriyorsa sınıf beyanı static class Globals.

class SomeClass { 

    public void SomeMethod() { 
    Globals.AnythingProperty += 1; 
    Globals.AnythingField = 2; 
    } 

} 

bağlantı artacak Kodunuzdaki genel değişkenleri olması ve ince hataları ve kod anlaşılması zor yol açabilir: Başka sınıfın içinden

sonra özelliği veya alanını erişebilirler. Çoğu zaman global değişkenleri kullanmanın alternatifleri vardır, ancak en azından şimdi nasıl yapacağınızı biliyorsunuz.