Aracılığıyla paylaş


Yöntemler (C# Programlama Kılavuzu)

Bir dizi deyimi içeren bir kod bloğu yöntemidir.Bir program yöntemini çağırarak ve gerekli yöntem bağımsız değişkenleri belirten yürütülecek deyimleri neden olur.C# [NULL]'ta yürütülen her yönerge bir yöntem bağlamında gerçekleştirilir.Main yöntemi her C# uygulamasına giriş noktasıdır ve program başlatıldığında, ortak dil çalışma zamanı tarafından (clr) denir.

[!NOT]

Bu konuda adlandırılmış yöntemleri anlatılmaktadır.Anonim işlevler hakkında daha fazla bilgi için bkz: Anonim İşlevler (C# Programlama Kılavuzu).

Yöntem imzaları

Yöntemleri bildirilir bir sınıfı veya struct gibi erişim düzeyini belirleyerek public veya private, isteğe bağlı değiştiriciler gibi abstract veya sealed, dönüş değeri, yöntem ve herhangi bir yöntem parametre adı.Bu arada yöntem imzası bölümleridir.

[!NOT]

Bir yöntemin dönüş türü imza yöntemi aşırı amacıyla yönteminin bir parçası değil.Ancak, bir temsilci için işaret eden yöntem arasındaki Uyumluluğu belirlerken imza yönteminin bir parçası olur.

Yöntem parametreleri ayraç içinde ve virgülle ayrılmış.Boş bir ayraç yöntem parametre gerektirir gösteriyor.Bu sınıf üç yöntem bulunur:

abstract class Motorcycle
{
    // Anyone can call this. 
    public void StartEngine() {/* Method statements here */ }

    // Only derived classes can call this. 
    protected void AddGas(int gallons) { /* Method statements here */ }

    // Derived classes can override the base class implementation. 
    public virtual int Drive(int miles, int speed) { /* Method statements here */ return 1; }

    // Derived classes must implement this. 
    public abstract double GetTopSpeed(); 
}

Erişim yöntemi

Bir nesnede bir yöntemini çağırarak bir alana erişme gibi olur.Nesne adından sonra bir süre, yöntem ve parantez adını ekleyin.Bağımsız değişkenleri parantez içinde listelenir ve noktalı virgülle ayrılmış.Yöntemleri Motorcycle sınıf bu nedenle aşağıdaki örnekte olduğu gibi çağrılabilir:

class TestMotorcycle : Motorcycle
{

    public override double GetTopSpeed()
    {
        return 108.4;
    }

    static void Main()
    {

        TestMotorcycle moto = new TestMotorcycle();

        moto.StartEngine();
        moto.AddGas(15);
        moto.Drive(5, 20);
        double speed = moto.GetTopSpeed();
        Console.WriteLine("My top speed is {0}", speed);            
    }
}

Yöntem parametreleri vs. bağımsız değişkenleri

Yöntem tanımı adları ve gerekli olan herhangi bir parametre türlerini belirtir.Kod çağrı yöntemi çağrılırken, her parametre için bağımsız değişkenler olarak adlandırılan somut değerleri sağlar.Bağımsız değişkenler parametre türüyle uyumlu olmalıdır ancak çağıran kodu kullanılan bağımsız değişken adı (varsa) aynı adlı parametre yönteminde tanımlanmış olması gerekmez.Örne?in:

public void Caller()
{
    int numA = 4;
    // Call with an int variable. 
    int productA = Square(numA);

    int numB = 32;
    // Call with another int variable. 
    int productB = Square(numB);

    // Call with an integer literal. 
    int productC = Square(12);

    // Call with an expression that evaulates to int.
    productC = Square(productA * 3);
}

int Square(int i)
{
    // Store input argument in a local variable. 
    int input = i;
    return input * input;
}

vs başvuruyla geçirme. değere göre iletme

Varsayılan olarak, bir değer türü bir yönteme geçirilen bir kopya nesne geçirilir.Bu nedenle, bağımsız değişken yapılan değişiklikler özgün kopya çağırma yöntemi etkisi yoktur.Ref anahtar sözcüðünü kullanarak bir değer türü başvuru ile iletebilirsiniz.Daha fazla bilgi için bkz. Değer Türü Parametrelerini Geçirme (C# Programlama Kılavuzu).Yerleşik türlerin listesi için bkz: Değer Türleri Tablosu (C# Başvurusu).

Başvuru türü bir nesne için bir yöntem geçirildiğinde nesnesine geçirilir.Diğer bir deyişle yöntemi nesnenin kendisini değil ancak nesnenin konumunu gösteren bir bağımsız değişken alır.Nesnesinin bir üyesi bu başvuruyu kullanarak değiştirirseniz, nesne tarafından değer geçirmek bile değişiklik arama yönteminin bağımsız yansıtılır.

Bir başvuru türü kullanarak oluşturduğunuz class aşağıdaki örnekte gösterildiği gibi anahtar sözcüğü.

public class SampleRefType
{
    public int value;
}

Şimdi, bu tür bir yöntem için temel nesne geçirirseniz, nesnesine geçirilir.Aşağıdaki örnek bir nesne türü geçirmeden SampleRefType yöntemine ModifyObject.

public static void TestRefType()
{
    SampleRefType rt = new SampleRefType();
    rt.value = 44;
    ModifyObject(rt);
    Console.WriteLine(rt.value);
}
static void ModifyObject(SampleRefType obj)
{
    obj.value = 33;
}

Bu bağımsız değişken değeri bir yöntemine iletir, örnek aslında önceki örnekteki gibi aynı şeyi yapar.Ancak, bir başvuru türü kullanıldığından, sonuç farklı.Yapılan değişiklik ModifyObject için value parametresi alan obj, ayrıca değiştirir value bağımsız değişken alan rt, TestRefType yöntemi.TestRefType Yöntemi 33 çıktısı olarak görüntülenir.

Değer ve başvuru tarafından başvuru türleri geçirmek hakkında daha fazla bilgi için bkz: Başvuru Türü Parametreleri Geçirme (C# Programlama Kılavuzu) ve Başvuru Türleri (C# Başvurusu).

Dönüş Değerleri

Yöntemlerini çağıran için bir değer döndürebilir.Return yazarsanız, yöntem adından önce listelenen türü değil void, yöntem kullanarak değeri döndürebilir return anahtar sözcük.İfadesi ile return dönüş türü ile eşleşen bir değer tarafından izlenen bir anahtar sözcük yöntemini çağıran bu değeri döndürür.return Anahtar sözcüğünü de yönteminin çalışmasını durdurur.Dönüş türü ise, void, return olmadan bir değer ifadesi, yönteminin çalışmasını durdurmak hala yararlıdır.Olmadan return anahtar sözcüğünü yöntemi durduracak yürütülen kod bloğunun sonuna ulaştığında.Void olmayan yöntemlerle dönüş türü kullanmak için gereken return bir değer döndürmek için anahtar sözcük.Örneğin, bu iki yöntem kullanmak return tamsayılar için anahtar sözcük:

class SimpleMath
{
    public int AddTwoNumbers(int number1, int number2)
    {
        return number1 + number2;
    }

    public int SquareANumber(int number)
    {
        return number * number;
    }
}

Yöntemi tarafından döndürülen değeri kullanmak için arama yöntemi aynı türde bir değer yeterli yöntem çağrısı kendisini herhangi bir yerde kullanabilirsiniz.Dönüş değeri bir değişken de atayabilirsiniz.Örneğin, aşağıdaki iki kod örnekleri aynı amacı gerçekleştirmek:

int result = obj.AddTwoNumbers(1, 2);
result = obj.SquareANumber(result);
// The result is 9.
Console.WriteLine(result);
result = obj.SquareANumber(obj.AddTwoNumbers(1, 2));
// The result is 9.
Console.WriteLine(result);

Kullanarak bir yerel değişken, bu durumda, result, saklamak için bir değer isteğe bağlıdır.Tüm kapsam yönteminin bağımsız değişkenin özgün değerini depolamanız gerekiyorsa gerekli olabilir veya kodun okunabilirliğini yardımcı olabilir.

Daha fazla bilgi için bkz. return (C# Başvurusu).

Zaman uyumsuz yöntemleri

Async özelliğini kullanarak, açık çaðrýlarý kullanarak veya el ile birden çok yöntem veya lambda ifadeleri kodunuzu bölerek olmadan zaman uyumsuz yöntemleri çağırabilirsiniz.Zaman uyumsuz özelliği kullanılmaya başlanan Visual Studio 2012.

Yöntemi ile işaretler, zaman uyumsuz değiştiricisi, kullanabileceğiniz bekler yönteminde işleci.Zaman uyumsuz yöntem await deyimde denetim ulaştığında, denetimi çağırana döndürür ve yöntemi devam eden awaited görev tamamlanıncaya kadar askıya alınır.Görev tamamlandığında, yürütme yönteminde devam edebilirsiniz.

[!NOT]

Henüz tamamlanmadı ilk awaited nesnenin karþýlaþtýðý veya zaman uyumsuz yöntem sonuna kadar alır, zaman uyumsuz yöntemini çağırana döndürür hangisi daha önce oluşur.

Zaman uyumsuz yöntem dönüş türüne sahip olabilir Task, Task, ya da void.Void dönüş türü void dönüş türüne gerekli olduğu olay işleyicileri, öncelikle tanımlamak için kullanılır.Void döndüren bir zaman uyumsuz yöntem beklediğin ve void döndüren bir yöntemin arayan yöntemi atar özel durumlar yakalayamaz.

Aşağıdaki örnekte, DelayAsync dönüş türüne sahip bir zaman uyumsuz yöntem Task.DelayAsyncolan bir return bir tamsayı döndürür ifade.Bu nedenle yöntem bildirimi DelayAsync dönüş türüne sahip olmalıdır Task<int>.Dönüş türü olduğundan Task<int>, değerlendirme, await ifade DoSomethingAsync aşağıdaki ifadeyi gösterir gibi bir tamsayı oluşturur: int result = await delayTask.

startButton_Click Yöntemi ise bir void dönüş türüne sahip bir zaman uyumsuz yöntem örneğidir.Çünkü DoSomethingAsync bir zaman uyumsuz yöntem çağrısı için görev DoSomethingAsync , aşağıdaki ifade gösterildiği beklediğin gerekir: await DoSomethingAsync();.startButton_Click Yöntemi ile tanımlanmalıdır async değiştiricisini yöntemin olduğundan bir await ifadesi.

// using System.Diagnostics; 
// using System.Threading.Tasks; 

// This Click event is marked with the async modifier. 
private async void startButton_Click(object sender, RoutedEventArgs e)
{
    await DoSomethingAsync();
}

private async Task DoSomethingAsync()
{
    Task<int> delayTask = DelayAsync();
    int result = await delayTask;

    // The previous two statements may be combined into 
    // the following statement. 
    //int result = await DelayAsync();

    Debug.WriteLine("Result: " + result);
}

private async Task<int> DelayAsync()
{
    await Task.Delay(100);
    return 5;
}

// Output: 
//  Result: 5

Herhangi bir zaman uyumsuz yöntem bildiremezsiniz ref veya dışarı parametreleri, ancak bu tür parametreleri olan yöntemleri çağırabilir.

Zaman uyumsuz yöntemleri hakkında daha fazla bilgi için bkz: Async ve Await ile Zaman Uyumsuz Programlama (C# ve Visual Basic), Zaman Uyumsuz Programlarda Denetim Akışı (C# ve Visual Basic), ve Zaman Uyumsuz Dönüş Türleri (C# ve Visual Basic).

Yineleyicilerde

Bir yineleyici bir liste veya bir dizi gibi bir koleksiyon üzerinde özel bir yineleme yapar.Bir yineleyici kullanan dönüşünden her öğe bir anda geri dönmek için deyim.Zaman bir dönüşünden ifadesi ulaşıldığında, kod geçerli konumda hatırlanır.Yineleyici sonraki çağrıldığında yürütme o konumdan yeniden başlatılır.

Bir yineleyici kullanarak istemci kodundan çağırma bir foreach ifadesi.

The return type of an iterator can be IEnumerable, IEnumerable, IEnumerator, or IEnumerator.

Daha fazla bilgi için bkz. Yineleyiciler (C# ve Visual Basic).

C# dil belirtimi

Daha fazla bilgi edinmek için, bkz. C# Dil Belirtimi. Dil belirtimi, C# sözdizimi ve kullanımı için kesin bir kaynaktır.

Ayrıca bkz.

Başvuru

Sınıflar ve Yapılar (C# Programlama Kılavuzu)

Erişim Değiştiricileri (C# Programlama Kılavuzu)

Statik Sınıflar ve Statik Sınıf Üyeleri (C# Programlama Kılavuzu)

Devralma (C# Programlama Kılavuzu)

Soyut ve Korumalı Sınıflar ve Sınıf Üyeleri (C# Programlama Kılavuzu)

params (C# Başvurusu)

return (C# Başvurusu)

out (C# Başvurusu)

ref (C# Başvurusu)

Parametreleri Geçirme (C# Programlama Kılavuzu)

Kavramlar

C# Programlama Kılavuzu