Aracılığıyla paylaş


Nesne tabanlı programlama (C# ve Visual Basic)

Visual Basic ve C# gibi .NET Framework yönetilen tüm dillerde kapsülleme, devralma ve çok biçimlilik gibi nesne yönelimli programlama için tam destek sağlar.

Kapsülleme bir grup ilgili özellikleri, yöntemleri ve diğer üyeler kabul edilir, tek bir birim veya nesne olarak anlamına gelir.

Devralma Varolan bir sınıfı tabanlı yeni sınıflar oluşturma yeteneği açıklar.

Çok biçimlilik her sınıf aynı özelliklerini veya yöntemlerini uygulayan farklı şekillerde olsa da birbirinin yerine, kullanılan birden çok sınıf olabilir anlamına gelir.

Bu bölümde aşağıdaki kavramlar açıklanmaktadır:

  • Sınıflar ve nesneler

    • Sınıf üyeleri

      Özellikleri ve alanları

      Yöntemleri

      Oluşturucular

      Yıkıcılar

      Olaylar

      Yuvalanmış sınıfları

    • Erişim değiştiricileri ve erişim düzeyleri

    • Sınıflarını örnekleme

    • Statik (sınıfları ve üyeleri paylaşılan)

    • Anonim türler

  • Devralma

    • Üyeleri geçersiz kılma
  • Arabirimleri

  • Genel türler

  • Temsilciler

Sınıflar ve nesneler

Koşulları sınıf ve Nesne Bazen birbirinin yerine, ancak aslında, sınıfları açıklar kullanılır türü nesnelerin nesneleri kullanılabilir durumdayken, örnekleri sınıfları.Böylece, nesne oluşturma işlemi olarak bilinir örnekleme.Ayrıntılı benzerliği kullanarak örnek bir sınıftır ve o şeması yapılan bir bina bir nesnedir.

Bir sınıf tanımlamak için:

Class SampleClass
End Class
class SampleClass
{
}

Hem Visual Basic ve C# sınıfları adı verilen hafif bir sürümünü de sağlar yapıları büyük nesneler dizisi oluşturmak ve yapmak istediğinizde yararlı olan çok fazla bellek için kullanmasını istediğiniz değil.

Bir yapı tanımlamak için:

Structure SampleStructure
End Structure
struct SampleStruct
{
}

Daha fazla bilgi için bkz:

Dd460654.collapse_all(tr-tr,VS.110).gifSınıf üyeleri

Her sınıf farklı olabilir. sınıf üyeleri Sınıf verilerini, sınıf davranış tanımlama yöntemleri ve farklı sınıflar ve nesneler arasındaki iletişimi sağlayan olayları tanımlayan özellikleri içerir.

Dd460654.collapse_all(tr-tr,VS.110).gifÖzellikleri ve alanları

Alanlar ve özellikler içeren bir nesne bilgileri temsil eder.Çünkü bunlar okunabilir veya doğrudan ayarlama gibi değişkenler alanlardır.

Bir alanı tanımlamak için:

Class SampleClass
    Public SampleField As String
End Class
Class SampleClass
{
    public string sampleField;
}

Özelliklerin get ve değerleri nasıl ayarlamak veya döndürülen daha fazla kontrol sağlayan yordamlar kümesi.

Hem C# ve Visual Basic özellik değerini saklamak için özel bir alan oluşturabilir veya bu alanı otomatik olarak arka planda oluşturma ve özellik yordamlar için temel mantığın sözde ve otomatik gerçeklenen özellikler kullanmak izin.

Otomatik olarak uygulanan bir özellik tanımlamak için:

Class SampleClass
    Public Property SampleProperty as String
End Class
class SampleClass
{
    public int SampleProperty { get; set; }
}

Okuma ve yazma özellik değeri için bazı ek işlemleri gerçekleştirmek gerekiyorsa, özellik değeri saklamak için bir alan tanımlamak ve depolamak ve onu almak için temel mantığı sağlar:

Class Samplelass
    Private m_Sample As String
    Public Property Sample() As String
        Get
            ' Return the value stored in the field.
            Return m_Sample
        End Get
        Set(ByVal Value As String)
            ' Store the value in the field.
            m_Sample = Value
        End Set
    End Property
End Class
class SampleClass
{
    private int _sample;
    public int Sample
    {
        // Return the value stored in a field.
        get { return _sample; }
        // Store the value in the field.
        set { _sample = value; }
    }
}

Özelliklerin çoğu yöntemler veya hem ayarlamak ve özellik değeri almak için yordamlar vardır.Ancak, bunları değiştiren okumak ya da silinmelerini kısıtlamak için salt okunur veya salt yazılır özellikler oluşturabilirsiniz.Visual Basic kullanabilirsiniz Salt okunur ve WriteOnly anahtar sözcükler.C# [NULL]'ta, atlayabilirsiniz Get veya ayarlama Özellik yöntemi.Ancak, hem Visual Basic ve C# [NULL]'ta, otomatik gerçeklenen özellikler salt okunur veya salt yazılır olamaz.

Daha fazla bilgi için bkz:

Dd460654.collapse_all(tr-tr,VS.110).gifYöntemleri

A yöntemi bir nesneyi gerçekleştiren bir eylemdir.

[!NOT]

Visual Basic'te bir yöntem oluşturmak için iki yol vardır: , Sub bir değer döndürmezse deyimi kullanılır; , İşlevi bir yöntemi bir değer döndürürse deyimi kullanılır.

Bir sınıfın bir yöntemini tanımlamak için:

Class SampleClass
    Public Function SampleFunc(ByVal SampleParam As String)
        ' Add code here
    End Function
End Class
class SampleClass
{
    public int sampleMethod(string sampleParam)
    {
        // Insert code here
    }
}

Bir sınıf çeşitli uygulamalarını sağlayabilirsiniz veya aşırı yükleme, aynı yöntemin sayısını parametre veya parametre türleri farklı.

Bir yönteme aşırı yükleme yapmak için:

Overloads Sub Display(ByVal theChar As Char)
    ' Add code that displays Char data.
End Sub
Overloads Sub Display(ByVal theInteger As Integer)
    ' Add code that displays Integer data.
End Sub
public int sampleMethod(string sampleParam) {};
public int sampleMethod(int sampleParam) {}

Çoğu durumda bir sınıf tanımı içinde bir yöntem bildirmek.Ancak, hem Visual Basic ve C# da destekler uzantı yöntemleri gerçek sınıf tanımı dışında varolan bir sınıfı yöntemleri eklemenize olanak sağlar.

Daha fazla bilgi için bkz:

Dd460654.collapse_all(tr-tr,VS.110).gifOluşturucular

Kurucular belirli bir türde bir nesne oluşturulduğunda otomatik olarak yürütülür sınıf yöntemlerdir.Kurucular genellikle veri üyeleri yeni nesnenin başlatın.Bir kurucu, yalnızca bir sınıf oluşturulduğunda bir kez çalıştırabilirsiniz.Ayrıca, Kod Oluşturucu, her zaman önce bir sınıf herhangi bir kod çalışır.Ancak, başka bir yöntem olduğu gibi birden fazla Oluşturucu aşırı oluşturabilirsiniz.

Bir sınıfı için bir kurucu tanımlamak için:

Class SampleClass
    Sub New(ByVal s As String)
        // Add code here.
    End Sub
End Class
public class SampleClass
{
    public SampleClass()
    {
        // Add code here
    }
}

Daha fazla bilgi için bkz:

Dd460654.collapse_all(tr-tr,VS.110).gifYıkıcılar

Yıkıcı sınıfların örneklerini destruct için kullanılır..NET Framework, çöp toplayıcı ayırma ve yönetilen nesnelere uygulamanızı bellek sürümü otomatik olarak yönetir.Ancak, hala yıkıcı, uygulamanızın oluşturduğu tüm yönetilmeyen kaynakları temizlemek için gerekebilir.Bir sınıf için yalnızca bir yıkıcı olabilir.

Yıkıcı ve çöp toplama .NET Framework hakkında daha fazla bilgi için bkz. Çöp Toplama.

Dd460654.collapse_all(tr-tr,VS.110).gifOlaylar

Bir sınıfın olayları etkinleştirmek veya diğer sınıfları bildirmek için nesneyi veya nesneleri ilgilendiren bir şey olduğunda oluşur.Olayı gönderir (veya yükseltir) sınıf adı verilir Publisher ve (veya ele) olay sınıfları adı verilen Aboneler.Olaylar hakkında daha fazla bilgi için bunlar oluşturulur ve nasıl ele, bkz: İşleme ve olaylarını tetiklemeye yönelik.

Dd460654.collapse_all(tr-tr,VS.110).gifYuvalanmış sınıfları

Başka bir sınıf içerinde tanımlanmış bir sınıf olarak adlandırılır iç içe.Varsayılan olarak, iç içe geçmiş özel sınıftır.

Class Container
    Class Nested
    ' Add code here.
    End Class
End Class
class Container
{
    class Nested
    {
        // Add code here.
    }
}

İç içe sınıfının bir örneğini oluşturmak için bir nokta tarafından takip ve sonra iç içe sınıf adından container sınıfının adını kullanın:

Dim nestedInstance As Container.Nested = New Container.Nested()
Container.Nested nestedInstance = new Container.Nested()

Dd460654.collapse_all(tr-tr,VS.110).gifErişim değiştiricileri ve erişim düzeyleri

Tüm sınıflar ve sınıf üyelerini kullanarak diğer sınıflar için sağladıkları hangi erişim düzeyi belirtebilirsiniz erişim değiştiricileri.

Aşağıdaki erişim değiştiricileri kullanılabilir:

Visual Basic değiştiricisi

C# değiştiricisi

Tanım

Ortak (Visual Basic)

Ortak

Türü veya üyesinin aynı derlemenin başvurduğu başka bir derleme de başka bir kod tarafından erişilebilir.

Özel (Visual Basic)

Özel

Türü veya üye yalnızca aynı sınıf içinde kod tarafından erişilebilir.

Korumalı (Visual Basic)

korumalı

Türü veya üye yalnızca kodu aynı sınıfta veya türetilmiş bir sınıf tarafından erişilebilir.

Arkadaş (Visual Basic)

İç

Türü veya üye herhangi bir kod aynı bütünleştirilmiş kodda, ancak başka bir derleme tarafından erişilebilir.

Korumalı arkadaş

Dahili korumalı

Türü veya üye bir aynı bütünleştirilmiş kodda veya herhangi başka bir derlemede türetilmiş bir sınıf tarafından erişilebilir.

Daha fazla bilgi için bkz. Visual Basic'te erişim düzeyleri ve Erişim değiştiricileri (C# Programlama Kılavuzu).

Dd460654.collapse_all(tr-tr,VS.110).gifSınıflarını örnekleme

Bir nesne oluşturmak için bir sınıfın örneği veya sınıf örneği oluşturmak gerekir.

Dim sampleObject as New SampleClass()
SampleClass sampleObject = new SampleClass();

Bir sınıf başlatıldıktan sonra örneğin özellikleri ve alanları için değerler atayın ve sınıf yöntemlerini çağırmak.

' Set a property value.
sampleObject.SampleProperty = "Sample String"
' Call a method.
sampleObject.SampleMethod()
// Set a property value.
sampleObject.sampleProperty = "Sample String";
// Call a method.
sampleObject.sampleMethod();

Sınıf örnekleme işlemi sırasında özellikleri için değerleri atamak için nesne başlatıcılar kullanın:

Dim sampleObject = New SampleClass With 
    {.FirstProperty = "A", .SecondProperty = "B"}
// Set a property value.
SampleClass sampleObject = new SampleClass 
    { FirstProperty = "A", SecondProperty = "B" };

Daha fazla bilgi için bkz:

Dd460654.collapse_all(tr-tr,VS.110).gifStatik (sınıfları ve üyeleri paylaşılan)

Bir özellik, yordam veya bir sınıfın tüm örnekleri tarafından paylaşılan bir alan olan sınıfının statik (paylaşılan içinde Visual Basic) üyesi.

(Paylaşılan) statik bir üyeye tanımlamak için:

Class SampleClass
    Public Shared SampleString As String = "Sample String"
End Class
static class SampleClass
{
    public static string SampleString = "Sample String";
}

Statik (paylaşılan) üyesi erişmek için bu sınıfın bir nesnesi oluşturmadan sınıfın adını kullanın:

MsgBox(SampleClass.SampleString)
Console.WriteLine(SampleClass.SampleString);

(Paylaşılan) statik sınıflar C# ve Visual Basic modülleri, yalnızca statik (paylaşılan) üyeleri olan ve örneği oluşturulamıyor.Statik olmayan (non-shared) özellikleri, alanları veya yöntemleri statik (paylaşılan) üyeleri de erişemiyor

Daha fazla bilgi için bkz:

Dd460654.collapse_all(tr-tr,VS.110).gifAnonim türler

Anonim türler, veri türü için bir sınıf tanımı yazmadan nesneleri oluşturmak sağlar.Bunun yerine, derleyici sınıf sizin için oluşturur.Sınıf kullanılabilir adı yok ve nesne bildirmek belirttiğiniz özellikler içerir.

Anonim türünün bir örneğini oluşturmak için:

' sampleObject is an instance of a simple anonymous type.
Dim sampleObject = 
    New With {Key .FirstProperty = "A", .SecondProperty = "B"}
// sampleObject is an instance of a simple anonymous type.
var sampleObject = 
    new { FirstProperty = "A", SecondProperty = "B" };

Daha fazla bilgi için bkz:

Devralma

Devralma, kullanır, genişleten ve başka bir sınıfta tanımlanan davranışını değiştiren yeni bir sınıf oluşturmanıza olanak sağlar.Sınıf üyeleri devralınır denir temel sınıf, ve bu üyelere devralan bir sınıf olarak adlandırılır türetilmiş sınıf.Ancak, hem C# ve Visual Basic tüm sınıflarda örtülü olarak devralınan Object .NET sınıf hiyerarşisi destekler ve tüm sınıflar için alt düzey hizmetleri sağlayan sınıf.

[!NOT]

.NET Framework yönetilen dillerde birden çok devralma desteklemez ı.e. türetilmiş bir sınıf için yalnızca bir temel sınıf belirtebilirsiniz.

Temel sınıftan kalıtımla için:

Class DerivedClass
    Inherits BaseClass
End Class
class DerivedClass:BaseClass{}

Varsayılan olarak, tüm sınıflar devralınabilir.Ancak, bir sınıfın temel bir sınıf olarak kullanılmamalıdır veya yalnızca temel bir sınıf olarak kullanılan bir sınıf oluşturmak olup olmadığını belirtebilirsiniz.

Bir sınıfın temel bir sınıf olarak kullanılamayacağını belirtmek için:

NotInheritable Class SampleClass
End Class
public sealed class A { }

Bir sınıf yalnızca temel bir sınıf olarak kullanılan ve başlatılamaz belirtmek için:

MustInherit Class BaseClass
End Class
public abstract class B { }

Daha fazla bilgi için bkz:

Dd460654.collapse_all(tr-tr,VS.110).gifÜyeleri geçersiz kılma

Varsayılan olarak, türetilmiş bir sınıf tüm üyeleri kendi temel sınıfından devralır.Devralınan üye davranışını değiştirmek istiyorsanız, onu geçersiz kılmanız gerekir.Diğer bir deyişle, türetilmiş bir sınıf içindeki yöntem, özellik veya olay yeni bir uygulama tanımlayabilirsiniz.

Aşağıdaki değiştiricilerin özelliklerini ve yöntemlerini nasıl kılınır denetlemek için kullanılır:

Visual Basic değiştiricisi

C# değiştiricisi

Tanım

Geçersiz kılınabilir (Visual Basic)

Sanal (C# Reference)

Türetilmiş bir sınıfta geçersiz kılınacak bir sınıf üyesi sağlar.

(Visual Basic) geçersiz kılar.

geçersiz kılma (C# Reference)

Base sınıfında tanımlanmış sanal (geçersiz kılınabilir) üyesi geçersiz kılar.

NotOverridable (Visual Basic)

Desteklenen değil

Türetilen bir sınıf içinde geçersiz kılınmış üye engeller.

MustOverride (Visual Basic)

abstract (C# Reference)

Gerektiren bir sınıf üyesi türetilmiş bir sınıfta geçersiz kılınacak.

Gölgeler (Visual Basic)

Yeni değiştirici (C# Reference)

Temel sınıfından devralınan üye gizler

Arabirimleri

Arabirimler, sınıfları gibi özellikler, yöntemler ve olaylar kümesi tanımlar.Ancak sınıflar, arabirimler uygulaması sağlamaz.Sınıfı tarafından uygulanan ve sınıflardan ayrı varlık olarak tanımlanır.Bir arabirim, tam olarak tanımlandığı gibi bir arabirimi uygulayan bir sınıf arabirimi her yönüyle uygulamalıdır bir sözleşme temsil eder.

Bir arabirim tanımlamak için:

Public Interface ISampleInterface
    Sub DoSomething()
End Interface
interface ISampleInterface
{
    void doSomething();
}

Bir sınıf içinde bir arabirim uygulamak için:

Class SampleClass
    Implements ISampleInterface
    Sub doSomething
        ' Method implementation.
    End Sub
End Class
class SampleClass : ISampleInterface
{
    void ISampleInterface.SampleMethod()
    {
        // Method implementation.
    }
}

Daha fazla bilgi için bkz:

Genel türler

Sınıfları, yapıları, arabirimleri ve .NET Framework yöntemleri tür parametreleri onlar saklamak veya kullanın nesne türlerini tanımlayın.Generics en yaygın örneği, bir koleksiyonu içinde depolanan nesnelerin türünü belirleyebileceğiniz topluluğudur.

Genel sınıf tanımlamak için:

Class SampleGeneric(Of T)
    Public Field As T
End Class
Public class SampleGeneric<T> 
{
    public T Field;
}

Genel bir sınıfın örneğini oluşturmak için:

Dim sampleObject As New SampleGeneric(Of String)
sampleObject.Field = "Sample string"
SampleGeneric<string> sampleObject = new SampleGeneric<string>();
sampleObject.Field = "Sample string";

Daha fazla bilgi için bkz:

Temsilciler

A temsilci yöntem imzası tanımlar türüdür ve uyumlu bir imza ile herhangi bir yöntemi için bir başvuru sağlar.Çağırma (çağrı yöntemi temsilci aracılığıyla veya).Temsilciler yöntemleri diğer yöntemler için bağımsız değişken olarak geçirmek için kullanılır.

[!NOT]

Olay işleyicileri temsilciler çağrılan yöntemleri başka bir şey olduğunu.Temsilciler, olay işleme hakkında daha fazla bilgi için bkz. Olaylar ve temsilciler.

Bir temsilci oluşturmak için:

Delegate Sub SampleDelegate(ByVal str As String)
public delegate void SampleDelegate(string str);

Temsilci tarafından belirtilen imza eşleşen bir yöntem bir başvuru oluşturmak için:

Class SampleClass
    ' Method that matches the SampleDelegate signature.
    Sub SampleSub(ByVal str As String)
        ' Add code here.
    End Sub
    ' Method that instantiates the delegate.
    Sub SampleDelegateSub()
        Dim sd As SampleDelegate = AddressOf SampleSub
        sd("Sample string")
    End Sub
End Class
class SampleClass
{
    // Method that matches the SampleDelegate signature.
    public static void sampleMethod(string message)
    {
        // Add code here.
    }
    // Method that instantiates the delegate.
    void SampleDelegate()
    {
        SampleDelegate sd = sampleMethod;
        sd("Sample string");
    }
}

Daha fazla bilgi için bkz:

Ayrıca bkz.

Kavramlar

C# Programlama Kılavuzu

Diğer Kaynaklar

Visual Basic programlama Kılavuzu