İçeriğe geç
ShiftDelete.Net
Haber ara/ SDN'ye SorGiriş
Haber Akışı SDNTV İnceleme Forum Yapay Zeka Akıllı Telefon Elektrikli Otomobil Oyun ShiftDelete.Net Global Teknoloji Haberleri Mobil Otomobil Donanım Savunma Bilim Sosyal Medya İnternet Giyilebilir Teknoloji Rehber Ürünler Son dakika Yazarlar
  1. Ana sayfa
  2. Topluluk
  3. Programlama
  4. Programlama Dilleri
Programlama Dilleri

C# new ile string tanımlaması

sonercelix19.11.20113 cevap8.557 görüntüleme
2009'den beri149 mesaj
#1
Merhaba arkadaşlar,

C# da int sayi=new int(); tanımlamasında bir sorun yokken

string ad=new string(); tanımlaması neden hatalı?
Cevaplar
2008'den beri3.195 mesaj
#2
String ad = string.Empty(); tanımlaması işini görür sanırım. Yeni string pointer ı yaratıldığında içinin boş olmaması lazım. int için ise varsayılan değer 0 dır. new operatörü C ve C++ daki pointerlar gibi davranır.
int sayi = new int(); --> sayinin ilk değeri otomatik olarak 0 verilir ve hafızada ataması yapılır.
string ad = new string(); --> hata verir çünkü string için ilk değer belirtilmemiştir.

string ad= null; veya
string ad = string.Empty(); hafızada oluşturulması için yapılmalıdır.

diyeceksiniz ki;

string ad; --> gibi bir kullanım neden hata vermiyor. Hata vermez çünkü derleyici/yorumlayıcı program bu ifadeyi declare yani bildirim olarak algılar. bir nesnenin declare edilmesi yani bildirilmesi ile hafızadan türü kadar yer ayrılır, fakat kullanım için alanın adres bildirimi programa alınmaz.

string ad;
Console.WriteLine(ad); --> hata verir çünkü değişkene hala atama yapılmamıştır.

string ad = null;
Console.WriteLine(ad); --> hata vermez. değişkene atama yapılmıştır ve değeri null olarak verilmiştir. 32 bitlik adresleme yapan sistem için bu ardı ardına 32 adet 0 dır ve hiç bir şey yazmaz.

eğer elimizde char türünden bir dizi varsa; örneğin

char[] isim= {'A','y','ş','e'};

bu durumda;

string ad = new string (isim); --> başarılı olacaktır ve
Console.WriteLine(ad); --> komutunun sonucu "Ayşe" olur.

Umarım anlatabildim. Saygılar. :clover:
sonercelix Konuyu açan
2009'den beri149 mesaj
#3
kosasker dedi: ↑
String ad = string.Empty(); tanımlaması işini görür sanırım. Yeni string pointer ı yaratıldığında içinin boş olmaması lazım. int için ise varsayılan değer 0 dır. new operatörü C ve C++ daki pointerlar gibi davranır.
int sayi = new int(); --> sayinin ilk değeri otomatik olarak 0 verilir ve hafızada ataması yapılır.
string ad = new string(); --> hata verir çünkü string için ilk değer belirtilmemiştir.

string ad= null; veya
string ad = string.Empty(); hafızada oluşturulması için yapılmalıdır.

diyeceksiniz ki;

string ad; --> gibi bir kullanım neden hata vermiyor. Hata vermez çünkü derleyici/yorumlayıcı program bu ifadeyi declare yani bildirim olarak algılar. bir nesnenin declare edilmesi yani bildirilmesi ile hafızadan türü kadar yer ayrılır, fakat kullanım için alanın adres bildirimi programa alınmaz.

string ad;
Console.WriteLine(ad); --> hata verir çünkü değişkene hala atama yapılmamıştır.

string ad = null;
Console.WriteLine(ad); --> hata vermez. değişkene atama yapılmıştır ve değeri null olarak verilmiştir. 32 bitlik adresleme yapan sistem için bu ardı ardına 32 adet 0 dır ve hiç bir şey yazmaz.

eğer elimizde char türünden bir dizi varsa; örneğin

char[] isim= {'A','y','ş','e'};

bu durumda;

string ad = new string (isim); --> başarılı olacaktır ve
Console.WriteLine(ad); --> komutunun sonucu "Ayşe" olur.

Umarım anlatabildim. Saygılar. :clover:
Teşekkür ederim gayet güzel anlatmışsın. Bende araştırdım sonrasında dediklerinle tamamen uyuşuyor. Eyv...
2010'den beri19 mesaj
#4
wyvallah hocam guzel sade anlatım

Cevabını yaz

Cevap yazmak için giriş yap ya da üye ol. Eski forum kullanıcı adın ve parolanla girebilirsin.