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:
Visual Basic
C#
Sı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.
Ö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:
Visual Basic
C#
Yö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:
Visual Basic
C#
Oluş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:
Visual Basic
C#
Yı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.
Olaylar
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.
Visual Basic
Olayları bildirmek için kullanın Olay açıklaması.
Olayları oluşturmak için kullanın RaiseEvent deyimi.
Olay işleyicileri bir yolla kullanarak belirtmek için kullanın WithEvents (Visual Basic) deyimi ve Handles yan tümcesi (Visual Basic) yan tümcesi.
Dinamik olarak eklemek, kaldırmak ve bir olayla ilişkili olay işleyicisini değiştirin yapabilmek için kullanın AddHandler ifadesini ve RemoveHandler deyimi ile birlikte AddressOf işleci (Visual Basic).
C#
Bir olay sınıfı bildirmek için kullanın Olay (C# Reference) anahtar sözcük.
Bir olayı için olay temsilcisini çağırın.
Bir olaya abone olmak için kullanın. += işleç; bir olay aboneliği kaldırmak için kullanın. -= işleci.
Yuvalanmış 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()
Eriş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 |
---|---|---|
Türü veya üyesinin aynı derlemenin başvurduğu başka bir derleme de başka bir kod tarafından erişilebilir. |
||
Türü veya üye yalnızca aynı sınıf içinde kod tarafından erişilebilir. |
||
Türü veya üye yalnızca kodu aynı sınıfta veya türetilmiş bir sınıf tarafından erişilebilir. |
||
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).
Sı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:
Visual Basic
C#
Statik (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:
Visual Basic
C#
Anonim 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:
Visual Basic: Anonim türleri (Visual Basic)
C# [NULL]'TA: Anonim türleri (C# Programlama Kılavuzu)
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:
Visual Basic
C#
Ü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 |
---|---|---|
Türetilmiş bir sınıfta geçersiz kılınacak bir sınıf üyesi sağlar. |
||
Base sınıfında tanımlanmış sanal (geçersiz kılınabilir) üyesi geçersiz kılar. |
||
Desteklenen değil |
Türetilen bir sınıf içinde geçersiz kılınmış üye engeller. |
|
Gerektiren bir sınıf üyesi türetilmiş bir sınıfta geçersiz kılınacak. |
||
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:
Visual Basic
C#
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:
Visual Basic
C#