Share via


Kısmi Sınıflar ve Yöntemler (C# Programlama Kılavuzu)

Tanımı bölünebilir bir sınıfı veya bir Yapı, bir arabirimi ya da iki veya daha fazla kaynak dosyalar üzerinde bir yöntem.Uygulama derlendiğinde tüm bölümleri birleştirilir ve her kaynak dosyanın bir bölümünü yazın veya yöntem tanımı içerir.

Parçalı sınıflar

Bir sınıf tanımını bölme arzu olduğunda birçok durum vardır:

  • Büyük bir proje üzerinde çalışırken, bir sınıf üzerinde ayrı dosyalar yayılmasını üzerinde aynı anda çalışmak birden çok programcılar sağlar.

  • Otomatik olarak oluşturulan kaynak ile çalışırken, kaynak dosyayı yeniden oluşturmanız gerekmeden sınıfına kod eklenebilir.Windows Forms, Web hizmeti sarıcı kodu vb. oluştururken visual Studio bu yaklaşımı kullanır.Bu sınıflar, Visual Studio tarafından oluşturulan dosyayı değiştirmek zorunda kalmadan kullanan kod oluşturabilirsiniz.

  • Bir sınıf tanımını bölmek için kullanmak kısmi anahtar sözcük değiştiricisi, aşağıda gösterildiği gibi:

public partial class Employee
{
    public void DoWork()
    {
    }
}

public partial class Employee
{
    public void GoToLunch()
    {
    }
}

partial Arabirimi ad alanında tanımlanabilir veya anahtar sözcük sınıf, yapı, diğer kısımlarını gösterir.Tüm bölümlerini kullanmak gerekir partial anahtar sözcüğü.Tüm bölümleri kullanılabilir derleme zamanı son türü oluşturmak için.Tüm bölümleri aynı erişilebilirlik gibi olmalıdır public, privateve benzeri.

Herhangi bir bölümünü soyut olarak bildirilirse, tüm tür Özet olarak değerlendirilir.Mühürlü bütün türü kabul sonra herhangi bir bölümü mühürlenmiş, bildirilirse.Herhangi bir bölümünü temel tür bildirirse, bütün türü o sınıf devralır.

Bir temel sınıf belirttiğiniz tüm bölümleri kabul etmelidir, ancak bir temel sınıf atlamak parçaları hala temel türü devralır.Son türü kısmi bildirimlerinde tarafından listelenen tüm arabirimleri uygulayan ve bölümleri farklı temel arabirimde belirtebilirsiniz.Herhangi bir sınıf, yapı veya arabirim üyeleri kısmi tanımında bildirilen tüm diğer bölümleri için kullanılabilir.Son türü tüm bölümleri derleme zamanında birleşimidir.

[!NOT]

partial Değiştiricisi temsilci veya numaralandırma bildirimlerinde kullanılabilir değil.

Aşağıdaki örnek, içinde iç içe türü kısmi olmasa bile, iç içe türü kendisini kısmen olabileceğini gösterir.

class Container
{
    partial class Nested
    {
        void Test() { }
    }
    partial class Nested
    {
        void Test2() { }
    }
}

Derleme zamanında özniteliklerinin kısmi türü tanımlarının birleştirilir.Örneğin, aşağıdaki tanımlamalar göz önünde bulundurun:

[SerializableAttribute]
partial class Moon { }

[ObsoleteAttribute]
partial class Moon { }

Bunlar için aşağıdaki bildiriler eşdeğerdir:

[SerializableAttribute]
[ObsoleteAttribute]
class Moon { }

Aşağıdaki tüm kısmi türü tanımlardan birleştirilir:

  • xml açıklamaları

  • arayüzler

  • Genel tür parametresi nitelikleri

  • sınıf öznitelikleri

  • üyeler

Örneğin, aşağıdaki tanımlamalar göz önünde bulundurun:

partial class Earth : Planet, IRotate { }
partial class Earth : IRevolve { }

Bunlar için aşağıdaki bildiriler eşdeğerdir:

class Earth : Planet, IRotate, IRevolve { }

Kısıtlamalar

Kısmi sınıf tanımları ile çalışırken izlemek için birkaç kural vardır:

  • Aynı tür bölümleri yapısındaki tüm kısmi tür tanımları ile değiştirilmesi gerekir partial.Örneğin, aşağıdaki sınıf bildirimleri bir hata oluşturur:

    public partial class A { }
    //public class A { }  // Error, must also be marked partial
    
  • partial Değiştirici yalnızca anahtar sözcükleri hemen önce görünür class, struct, veya interface.

  • Aşağıdaki örnekte gösterildiği gibi iç içe kısmi türlerinden kısmi türü tanımlarının izin verilir:

    partial class ClassWithNestedClass
    {
        partial class NestedClass { }
    }
    
    partial class ClassWithNestedClass
    {
        partial class NestedClass { }
    }
    
  • Aynı tür bölümleri yapısındaki tüm kısmi tür tanımları aynı derlemenin ve aynı Modülü (.exe veya .dll dosyası) tanımlanması gerekir.Kısmi tanımları birden çok modülü yayılamaz.

  • Sınıf adı ve genel tür parametreleri tüm kısmi tür tanımları eşleşmesi gerekir.Genel türler kısmi olabilir.Her kısmi bildirim aynı parametre adları aynı sırayla kullanmanız gerekir.

  • Bir kısmi tür tanımı aşağıdaki anahtar sözcükler isteğe bağlıdır, ancak varsa bir kısmi tür tanýmý, aynı türde başka bir kısmi tanımı belirtilen anahtar sözcükleri çakışmamalıdır:

Örnek 1

Description

Aşağıdaki örnek, alanlar ve sınıf yapıcısı CoOrds, tek parçalı sınıf tanımı ve üye bildirilen PrintCoOrds, başka bir kısmi sınıf tanımında bildirilen.

Kod

public partial class CoOrds
{
    private int x;
    private int y;

    public CoOrds(int x, int y)
    {
        this.x = x;
        this.y = y;
    }
}

public partial class CoOrds
{
    public void PrintCoOrds()
    {
        Console.WriteLine("CoOrds: {0},{1}", x, y);
    }

}

class TestCoOrds
{
    static void Main()
    {
        CoOrds myCoOrds = new CoOrds(10, 15);
        myCoOrds.PrintCoOrds();

        // Keep the console window open in debug mode.
        Console.WriteLine("Press any key to exit.");
        Console.ReadKey();
    }
}
// Output: CoOrds: 10,15

Örnek 2

Description

Aşağıdaki örnek, ayrıca kısmi yapılar ve arabirimleri geliştirebilirsiniz olduğunu gösterir.

Kod

partial interface ITest
{
    void Interface_Test();
}

partial interface ITest
{
    void Interface_Test2();
}

partial struct S1
{
    void Struct_Test() { }
}

partial struct S1
{
    void Struct_Test2() { }
}

Kısmi yöntemleri

Kısmi sınıf veya yapı birimi kısmi bir yöntem içerebilir.Bir sınıfın parçası yöntem imzası içerir.Aynı bölümü ya da başka bir bölümüne isteğe bağlı bir uygulama tanımlanabilir.Uygulama sağlanmazsa, derleme zamanında yöntemi ve yöntemine yapılan tüm çağrıların kaldırılır.

Kısmi yöntemleri bir olaya benzer bir yöntem tanımlamak bir sınıf bir kısmının Uygulayıcısı etkinleştirin.Sınıf diğer kısmının Uygulayıcısı veya yöntemi uygulamak karar verebilirsiniz.Yöntem uygulanmadı, sonra derleyici yöntemini kaldırır, imza ve tüm çağrı yöntemi.Değerlendirme görüşmeleri bağımsız değişkenleri ortaya çıkabilecek sonuçları da dahil olmak üzere bu yöntem çağrıları zamanında hiçbir etkisi yoktur.Bu nedenle, uygulama sağlanmadı bile kısmi sınıfındaki herhangi bir kodu serbestçe kısmi bir yöntem kullanabilirsiniz.Yöntem olarak adlandırılan ancak uygulanmayan derleme sırasında veya çalışma zamanı hatası neden olur.

Kısmi yöntemleri oluşturulan kodu özelleştirmek için bir yol olarak özellikle yararlıdır.Bir yöntem adını sağlarlar ve böylece üretilen kod, ayrılacak imza yöntemini çağırabilirsiniz ancak geliştirici yöntemi uygulamak karar verebilirsiniz.Çok parçalı sınıflar gibi kod üreticisi tarafından oluşturulan ve birlikte çalışma süresi maliyetleri çalışmak için İnsan bir geliştirici tarafından oluşturulan kodunu kısmi yöntemleri sağlar.

Kısmi yöntem bildiriminde iki bölümden oluşur: tanımı ve uygulama.Bunlar, kısmi bir sınıf ayrı bölümlerini veya aynı bölümü olabilir.Hiçbir uygulama bildirimi var. sonra derleyici hemen her iki tanımlama iyileştirir bildirimi ve tüm çağrı yöntemi.

// Definition in file1.cs
partial void onNameChanged();

// Implementation in file2.cs
partial void onNameChanged()
{
  // method body
}
  • Kısmi yöntem bildirimleri bağlamsal anahtar sözcüğü ile başlaması gerekir kısmi ve yöntem döndürmesi gerekir void.

  • Kısmi yöntemleri olabilir ref ama dışarı parametreleri.

  • Kısmi yöntemlerdir örtülü olarak özel, ve bu nedenle olamaz sanal.

  • Kısmi yöntemleri olamaz extern, çünkü gövde varlığını bunlar tanımlama uygulamak mı olduğunu belirler.

  • Kısmi yöntemleri olabilir statik ve güvensiz değiştiriciler.

  • Kısmi yöntemleri genel olabilir.Kısıtlamaları tanımlama kısmi yöntem bildiriminde koymak ve isteğe bağlı olarak uygulama bir yinelenmiş olabilir.Parametre ve türü parametre adlarını tanımlayan bir uygulama bildirimde aynı olması gerekmez.

  • Yapabileceğiniz bir temsilci tanımlanan ve uygulanan kısmi bir yöntem, ancak yalnızca tanımlanan bir kısmi yöntem değil.

C# dil belirtiminin

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 (C# Programlama Kılavuzu)

Yapılar (C# Programlama Kılavuzu)

Arabirimler (C# Programlama Kılavuzu)

partial (Tür) (C# Başvurusu)

Kavramlar

C# Programlama Kılavuzu