İç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# Struct İçerisinde Array Tanımlama

Ben Kenobi20.03.201210 cevap6.528 görüntüleme
2011'den beri7.329 mesaj
#1
cannot have instance field initializers in structs

hatası veriyor, internetteki araştırmalarımdan pek birşey anlamadım.
bilen varsa yardımcı olabilir mi?
Cevaplar
2009'den beri523 mesaj
#2
Tam olarak yapmak istediğini yazsaydın fikir veren daha çok olurdu.
2007'den beri17 bin mesaj
#3
Kodunu da yazsaydın da görseydik yanlışını?
Ben Kenobi Konuyu açan
2011'den beri7.329 mesaj
#4
yahu koda ne gerek var arkadaşlar.
çok basit birşeydi kod
ama c# üzerinde doğrudan yapılamıyormuş.
alın size kod
public struct deneme
{
    public int[] merhaba = new int[5];
    public int gülegüle;
}


işte bu olmuyor.
public int[] merhaba = { 1,2,3,4,5}
desem de olmuyor
kodun önemi yok
herhangi bir şekilde struct yapıya array eklemeyi soruyorum.
2011'den beri174 mesaj
#5
kardeş ceneric olarak tanımlasan olmaz mı? list<> komutu ile hemde otomatik kendısı buyur kuçulur..veriye göre..
ayrıca public int gülegüle demişsin:) ü harfleri olmaz:D böyle birşey kabul eder mi sence bir düşün int içine string veri girişi yapmıssın:D
ayrıca tam olarak ne yapmaya calıştın çözemedim..
int içinde int string içinde string tanımlarsın eger başka bişi yapcaksan object olarak tanımla :)ama bu seferde veri tipinin ne olduğunu bulamazsın..

sen jenerik list kullan:) boş geç array'i jenerik list kullan oh kafan rahat ha illa dizi tanımlıcam diyorsan
Array komutunun Resize diye bir özelligi var sana aşagıda bir örnek yaptım ok kardeş bunu kullan derım
ogrenciler bir dizidir ama globak dizi... ok ;) yapmak istedigini tam anlamadıgım için bu sekılde ornekler v.s verdim dostum umarım işine yarar...

string[] ogrenciler = new string[0];
if (!ogrenciler.Contains(txtGirilenDeger.Text))
{
Array.Resize(ref ogrenciler, ogrenciler.Length + 1);

ogrenciler[ogrenciler.Length - 1] = txtGirilenDeger.Text;
2012'den beri250 mesaj
#6
Merhaba cgrszone,

Struct içerisinde instance oluşturamazsın. Struct, object içeren recorddur. Template olarak düşünebilirsin. Şöyle yapabilirsin:

public struct deneme
{
public int[] merhaba = new int[5];
public int gulegule;
}

yerine

public struct deneme
{
public int[] merhaba;
public int gulegule;
}

olarak struct oluştur. Kullanmak istediginde:

{
.
.
.
deneme myStruct = new deneme();
myStruct.merhaba = new int[5];
.
.
.
}

şeklinde kullanabilirsin.
2007'den beri17 bin mesaj
#7
İyi de ben biliyorum zaten :D Arkadaşa anlat :D
Ben Kenobi Konuyu açan
2011'den beri7.329 mesaj
#8
@cgrszone biliyorsunuz da neden cevap yazmadınız bu güne kadar.
saçma sapan cevaplar geldi herkesten, gülegüle isimli int tanımlanmaz gibi.
neyse @kizanlik teşekkürler
bir de fixed ile yapılabiliyormuş onu öğrendim.
2007'den beri17 bin mesaj
#9
Bir sebepten dolayı canım cevap vermek istemedi çünkü...
2012'den beri250 mesaj
#10
cgrszone: pardon.
Ben Kenobi:

Vermiş oluğun örnekten, structın safe mi unsafe mi olduğunu anlayamadım. Fixed deyince bi' durdum.

Kabaca, safe için .NET FrameWork'ün dışına taşmayan fakat unsafe için .NET FrameWork'ün dışına taşan yapılar diyebiliriz.

- Fixed
, unsafe yapılarda kullanılır.
- Unsafe yapılar da genellikle thread içerisinde kullanılır. (Thread herhangi bir amaç için kullanılabilir.)
- Unsafe gözönüne alınırsa, unmanaged kodlar ile haberleşmek isteyen threadlerden söz edebiliriz.

Bu durumda da, .NET'i hedef almayan yazılımdan bahsetmemiz gerekir. Böyle bir yazılımla (genellikle donanım kontrol eden) veri alışverişinde bulunmak istiyorsan, yapıya dikkat etmen gerekir.

.NET FrameWork'te GC (GarbageCollector) sistemi var. GC, Safe (managed) kodların kapladığı alanı canı istediğinde boşaltabiliyor. Bu nedenle, gelecek olan verinin depolanacağı alanı korumak için de yapı unsafe olarak tasarlanıyor. Böylece GC o yapıya dokunmuyor ve veri sağlam olarak ulaşıyor.

Safe yapı içerisinde çalışıyorsan, bahsettiğim şekilde kullanmanı tavsiye ederim. Unsafe yapı içerisindeysen, duruma göre, fixed bir çözüm olabilir.
Ben Kenobi Konuyu açan
2011'den beri7.329 mesaj
#11
@cgrszone üstad canın sağolsun.
ama üzüldüm yani, birşeyimi mi gördün de cevap yazmadın :(

@kizanlik ben de tam onu soracaktım bu safe, unsafe meselesi ne oluyor diye.
safe kullanmak özel şartlar haricinde daha mantıklı yani.
çok teşekkür ederim.

Cevabını yaz

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