C# CS7036 hatası, bir metot çağrısında metot tanımında zorunlu olan bir parametre için karşılık gelen argüman verilmediğinde oluşur. Genellikle düzeltmeniz gereken yer metot tanımı değil, eksik değerin bırakıldığı çağrı satırıdır. Önce hata mesajındaki metot adını ve eksik parametreyi bulun; ardından çağrıyı, metot imzasındaki parametrelerle karşılaştırın.
Bu hata çoğu zaman karmaşık bir kod problemine işaret etmez. Bir değerin unutulması, argümanların yanlış sıraya konması veya çağrıdaki adlandırılmış parametre adının metot imzasıyla uyuşmaması yeterlidir.
C# CS7036 Hatası Neden Oluşur?
Bir metodun tanımında kullanılan isimlere parametre, metot çağrılırken gönderilen gerçek değerlere ise argüman denir. Örneğin:
void Selamla(string ad, int yas)
{
Console.WriteLine($"{ad}, {yas} yaşında.");
}
Bu tanımda ad ve yas birer parametredir. Metot şu şekilde çağrılırsa iki parametre de karşılanır:
Selamla("Ada", 20);
Buradaki "Ada" ve 20 ise argümandır. Ancak yalnızca Selamla("Ada"); yazıldığında ad karşılanır, yas için herhangi bir argüman verilmez. yas zorunlu olduğu için derleyici CS7036 hatasını üretir.
Hata mesajını okurken üç noktaya odaklanabilirsin:
- Metot adı: Hangi metodun çağrısında sorun olduğunu gösterir.
- Eksik parametre: Karşılığı verilmeyen zorunlu parametrenin adını belirtir.
- Hata satırı: Genellikle eksik argümanın bulunduğu metot çağrısını işaret eder.
İlk teşhis adımı, hata satırındaki çağrıyı ve bu çağrının kullandığı metot tanımını birlikte incelemektir. Sadece çağrı satırına bakmak, parametrelerin zorunlu mu yoksa varsayılan değerli mi olduğunu anlamanı zorlaştırabilir.
Metot İmzasını ve Argümanları Adım Adım Eşleştirme

CS7036 hatasını sistematik biçimde çözmek için aşağıdaki dört adımlı akışı kullanabilirsin.
- Metot imzasını bul: Metodun adını, parametrelerini ve parametre türlerini incele. Örneğin
metot(string ad, int yas)imzasında iki parametre vardır:adveyas. - Zorunlu ve varsayılan parametreleri ayır: Her parametrenin çağrıda mutlaka gönderilmesi gerekip gerekmediğini kontrol et. Varsayılan değeri olmayan parametreler genellikle zorunludur.
- Konumsal argümanları sırayla eşleştir: Çağrıda verilen ilk değer ilk parametreyle, ikinci değer ikinci parametreyle eşleşir.
metot("Ada")çağrısında"Ada",adparametresine gider;yasiçin değer kalmaz. - Tür ve isim uyumunu kontrol edip yeniden derle: Argümanın türünün parametreyle uyumlu olduğundan emin ol. Adlandırılmış kullanım varsa parametre adının da metot imzasındaki adla aynı olması gerekir. Düzeltmeden sonra projeyi yeniden derleyerek hatanın giderildiğini doğrula.
Örneğin metot(string ad, int yas) çağrısını yalnızca metot("Ada") biçiminde yazarsan eksik kalan değer yas olur. Çağrının çalışabilmesi için bu parametreyi karşılayan uygun bir argüman eklenmelidir.
Kısa kontrol listesi:
- Hatanın gösterdiği çağrı satırını bul.
- Metot tanımındaki parametre sayısını kontrol et.
- Argümanların parametrelerle doğru sırada eşleştiğini incele.
- Argüman türlerinin parametre türleriyle uyumlu olduğunu doğrula.
- Varsa parametre adlarının doğru yazıldığını kontrol et.
Çalışan Kısa Örnek: Hatalı Çağrı ve Düzeltilmiş Kod

CS7036 hatasını anlamanın en kolay yolu, metot imzasındaki parametreleri çağrıda gönderilen argümanlarla karşılaştırmaktır. Aşağıdaki metot, name ve age olmak üzere iki zorunlu parametre bekler:
using System;
class Program
{
static void Greet(string name, int age)
{
Console.WriteLine($"Merhaba {name}, yaşınız {age}.");
}
static void Main()
{
Greet("Ada");
}
}
Greet("Ada"); satırında yalnızca bir argüman gönderilmiştir. "Ada" değeri name parametresini karşılar; ancak int türündeki zorunlu age parametresi için herhangi bir değer verilmemiştir. Bu nedenle derleyici, eksik argüman bulunduğunu bildirir.
Çözüm, çağrıya yaş değerini eklemektir:
Greet("Ada", 14);
Bu çağrıda argümanlar sırayla eşleşir: "Ada" → name, 14 → age. Böylece metot gövdesi çalışır ve beklenen çıktı şu olur:
Merhaba Ada, yaşınız 14.
Teşhis akışı kısaca şöyledir: Önce hata mesajındaki metot adını bulun, ardından metot imzasında hangi parametrelerin zorunlu olduğunu kontrol edin. Daha sonra çağrıdaki argümanları sırayla bu parametrelerle eşleştirin. Eksik değer varsa ekleyin; tür veya sıra uyuşmazlığı varsa çağrıyı yeniden düzenleyin.
Named Argument, Varsayılan Parametre ve Overload ile Doğru Çözümü Seçme
CS7036 hatasında her zaman yeni bir parametre eklemek gerekmez. Önce sorunun eksik değer mi, parametre sırası mı, yoksa metot tasarımı mı olduğunu belirlemek gerekir.
| durum | ne zaman düşünülür | düzeltme yaklaşımı | dikkat edilecek nokta |
|---|---|---|---|
| Parametre sırası karıştı | Argümanlar doğru ancak konumsal çağrı okunması zor veya riskliyse | Named argument kullanın | İsimler metot imzasındaki parametrelerle aynı olmalıdır |
| Gerçekten isteğe bağlı değer | Değer verilmediğinde kullanılabilecek anlamlı bir varsayılan varsa | Varsayılan parametre tanımlayın | Varsayılan değer, her kullanım senaryosunda doğru sonucu vermelidir |
| Farklı kullanım senaryoları | Aynı işlevin farklı sayıda veya türde bilgiyle kullanılacağı tasarlanmışsa | Overload değerlendirin | Her overload açık ve tutarlı bir davranış sunmalıdır |
Örneğin metot imzası Greet(string isim, int yas) ise konumsal çağrıda Greet("Ada", 14) kullanılabilir. Parametrelerin yerini karıştırma ihtimali varsa Greet(isim: "Ada", yas: 14) biçimi, her değerin hangi parametreye ait olduğunu daha görünür hâle getirir. Bu kullanım özellikle aynı türden birden fazla parametre olduğunda anlam karışıklığını azaltır.
Bir değer gerçekten isteğe bağlıysa metot Greet(string isim, int yas = 0) şeklinde tanımlanabilir. Ancak yalnızca CS7036 hatasını susturmak için rastgele bir varsayılan değer seçmek doğru değildir. Benzer şekilde, çağrıyı değiştirmek yerine gereksiz bir parametre eklemek metot sözleşmesini karmaşıklaştırabilir. Overload ise ancak farklı kullanım biçimleri gerçekten anlamlıysa tercih edilmelidir.
Bu ayrımları uygulamalı biçimde gözden geçirmek ve temel C# kavramlarını ölçmek için C# bilgi testini çözebilirsin.
Düzeltmeyi Nasıl Doğrular ve C# Öğrenme Yoluna Nasıl Bağlarsın?
CS7036 hatasını düzelttikten sonra yalnızca kırmızı uyarının kaybolmasına bakma. Önce metot imzasını yeniden oku ve çağrıdaki her argümanın doğru parametreye karşılık geldiğini kontrol et. Ardından projeyi derle; derleme hatasının ortadan kalktığını gördükten sonra programı çalıştırarak beklenen çıktıyı mevcut sonuçla karşılaştır.
- Metot adını, parametre sayısını ve parametre türlerini yeniden kontrol et.
- Zorunlu her parametrenin çağrıda karşılandığından emin ol.
- Projeyi derleyerek CS7036 uyarısının kaybolduğunu doğrula.
- Benzer bir metot çağrısını kendin yazarak aynı eşleştirmeyi tekrar yap.
Son adım önemlidir. Hata yalnızca kopyalanan satırda düzelirse, metot imzasını okuma becerisi henüz pekişmemiş olabilir. Her gün birkaç küçük çağrıyı incelemek, parametreleri sırayla eşleştirmek ve olası hatayı çalıştırmadan önce tahmin etmek faydalıdır. C# öğrenme yolunu planlarken genel yazılım temelleri, düzenli pratik ve hata teşhisi becerileri birlikte ilerlemelidir. Bu süreci yapılandırmak için yazılım öğrenme yolunu planlamaya yardımcı programlara göz atabilirsin.
Sık Sorulan Sorular
CS7036 hatası çalışma zamanı hatası mı, derleme zamanı hatası mı?
CS7036 bir derleme zamanı hatasıdır. Program çalıştırılmadan önce derleyici, metot çağrısında zorunlu bir parametrenin karşılanmadığını bildirir. Gerekli argümanı eklediğinde veya çağrıyı imzaya uygun hâle getirdiğinde program çalıştırılabilir.
Named argument kullanmak yanlış parametre sırasından kaynaklanan her sorunu çözer mi?
Hayır. Named argument, doğru parametre adını yazarak sıralama karışıklığını azaltır. Ancak zorunlu bir parametreyi hiç vermezsen, parametre adını yanlış yazarsan veya gönderdiğin değer uygun türde değilse hata devam edebilir.
Varsayılan parametre ile overload arasında nasıl seçim yapılır?
Aynı davranışın bazı değerler verilmeden de sürdürülebilmesi durumunda varsayılan parametre pratik olabilir. Farklı parametre kombinasyonları farklı işlemler veya belirgin biçimde farklı davranışlar oluşturuyorsa overload daha anlaşılır bir seçimdir.
CS7036 hatasında yeni bir parametre eklemek neden çoğu zaman doğru çözüm değildir?
Hata, çağrının metot imzasındaki zorunlu parametrelerle uyuşmadığını gösterir. Ne istendiğini anlamadan rastgele bir değer eklemek, gereksiz veya yanlış veri göndermene yol açabilir. Önce mevcut imzayı incelemeli, yalnızca gerçekten gerekli olan argümanı doğru tür ve sırayla vermelisin.
CS7036, metot imzasını okuyup çağrıyı bilinçli kurduğunda kolayca çözülebilen bir derleme uyarısıdır.