Makale Özeti

"VB.NET biliyorum C# da öğrenmek istiyorum." diyenler için bir makale dizisi.

Makale

VB.NET 'den C#'a - 2

Class tanımlama

VB.NET'de  kapsam belirlemek için oluşturulacak koda ait ayrılmış kelime yazılıp , End ... ifadesi ile sonladırılır. Örneğin bir sınıf tanımlaması yapmak için;

  Public Class Class1

   

  End Class

C#'da ise kapsam belirlemek için küme parantezi ({}) karakterleri kullanılır.

      public class Class1

      {

 

      }

Not: Object oriented programming anahtar kelimelerini makalenin devamında yazım kurallarından sonra aktaracağım.

Namespace Tanımlama

VB.NET'de namespace tanımlamak için Namespace isim ... End Namespace ifadesi kullanılır. Bu namespace içerisine eklenmek istenen türler Namespace ... ve End Namespace ifadeleri arasına yazılır.

Namespace ns1

  Public Class Class1

 

  End Class

End Namespace

C#'da ise kapsam belirmek  için yine küme parantezleri kullanılır.

namespace ns1

{

      public class Class1

      {

 

      }

}

Namespace Import

VB.NET'de namespace import etmek için imports ifadesi kullanılır.

Imports System

Imports System.Data.SqlClient

Imports r = System.Reflection 'r alias olarak tanımlanmıştır.

C#'da ise using ifadesi kullanılır.

using System;

using System.Data.SqlClient;

using r=System.Reflection; //r alias olarak tanımlanmıştır.

VB.NET'de bir sınıfı import edebiliriz. Bir sınıfı import ettiğimizde sınıf içerisindeki shared (c#'da static) üyelere sınıf ismini yazmadan direkt olarak erişebiliriz ancak bu özellik C#'da yoktur.

Değişken Tanımlama ve Initialization

VB.NET'de değişken tanımlarken önce değişkenin adı daha sonra "As" ifadesini takiben değişkenin türü yer alır. En başta ise Dim ifadesi yada bir erişim denetleyicisi (Public,Private...) yer almalıdır. Sadece Dim ile tanımlandığında private olarak tanımlanır.

    Dim sayi As Integer

    Dim tutar As Decimal

    Dim c1 As Class3

    Dim obj As Object

C#'da değişken tanımlarken önce veri türü sonra değişken ismi yazılır. Herhangi bir erişim denetleyicisi tanımlanmadan tanımlama yapıldığında private olarak tanımlanır.

   int sayi;

   decimal tutar;

   CSLib.Class1 c1;

   Object obj;

Bir sınıftan örnek türetmek için VB.NET'de olduğu gibi C#'da da new anahtar kelimesi kullanılır.

    Dim c2 As New Class3
 

    Dim c3 As Class3

    c3 = New Class3


    CSLib.Class1 c2=new CSLib.Class1();
 

    CSLib.Class1 c3;

    c3=new CSLib.Class1();

Dizi değişkenler

C#'da dizi değişken tanımlamak için aşağıdaki yazım kuralları tercih edilebilir.

            int[] i;

            i=new int[2];

            i[0]=10;

            i[1]=11;

            foreach (int x in i)

            {

                MessageBox.Show(x.ToString());

            }

Değişkeni initialize ederken küme parantezleri içinde değerler verilerek tanımlanabilr.

            int[] i={10,11};

            foreach (int x in i)

            {MessageBox.Show(x.ToString());}

Aşağıdaki kod bloğunda önceki tanımlamadan farklı olarak initializing yapılırken new ifadeside yer almaktadır.

            int[] i=new int[]{10,11};

            foreach (int x in i)

            {MessageBox.Show(x.ToString());}

Değişkenleri initialize etmek yani başlangıç durumuna getirmek.

VB.NET'de değişkenler ister sınıf seviyesinde tanılanmış field'lar olsun, ister metodlar içerisinde geçerli olan yerel değişkenler olsun, varsayılan değerlere sahiptir. integer gibi bir türde 0 değerine sahiptir, referans türlerde ise nothing olur.

Aşağıdaki VB.NET kodu herhangi bir hata vermeden çalışacaktır. Sınıfın bir field'ı olarak tanımlanmış olan int1'de, metod içinde yerel değişken olarak tanımlanmış olan int2'de varsayılan olarak bir değer (integer için sıfır(0)) almaktadır.

Public Class Class4

    Public int1 As Integer

    Public Function Ekle() As Integer

        Dim int2 As Integer

        Return int1 + int2

    End Function

End Class


Aynı kodu C# ile yazdığımızda return ifadesinin yanında int1 ve int2'nin toplama işleminde int2'nin altını çizer.

C#'da fieldlar (yani sınıf seviyesinde tanımlanmış olan değişkenler) için il değer ataması yapılır ve değişkenler ilk değere sahip olurlar. Ancak metod kapsamı içinde kalan yani yerel değişkenler diye geçen değişkenler ise ilk değer ataması yapılmadığı takdirde ilk değere sahip değildir. Ve haliyle aşağıdaki örnekte olduğu gibi bir değer ataması yapılmadan kullanılmak istendiğinde C# derleyicisi derleme aşamasında hata verir.  Use of unassigned local variable 'int2'

      public class Class4

      {

            public int int1;

            public int Ekle()

            {

                  int int2;

                  return int1+int2;

            }

      }

Metod Tanımlama

VB.NET'de metod tanımlaması geriye değer dönüp dönemeyeceğine bağlı olarak, Sub ve Function olarak tanımlanırlar.

Public Class Class5

     Public Sub DoSomething()

        'sub içerisinde gerekli kodlar çalışır, işini yapar.

        'ancak geriye bir değer dönmez.

    End Sub

    Public Function GetSiteName() As String

        'function içerisinde gerekli kodlar çalışır, işini yapar.

        'ancak geriye bir değer dönmesi gerekir.

        Return "yazgelistir.com"

    End Function

End Class

 

C#'da sub ve function gibi iki ayrı anahtar kelime yoktur, yazım kuralı erişim denetleyicinin ardından metottan geriye dönecek veri türü yazılır ardından metod ismi yazılır. VB.NET ile Function tanımlamasından sonra As ifadesi ile yazdığımız veri türü, C#'da metod isminden önce yazılır. Sub yerine geriye değer dönmeyeceğini belirlemek için void yazılır.

      public class Class5

      {

            public void DoSomething()

            {

                  //yap birşeyler

            }

            public string GetSiteName()

            {

                  return "yazgelistir.com";

            }

      }

VB.NET'de önüne erişim denetleyici yazılmayan bir metod varsayılan olarak public iken, C#'da private olarak belirlenir.

 

Cengiz HAN
Microsoft ASP.NET MVP
cengiz@cengizhan.com