Turkcell | Geleceği Yazanlar

Soru & Cevap

Class Instance Almak

18.10.2020 - 15:50

Merhabalar,

C#'ta yeniyim. Obje oluşturma konusunda kafam karıştı.

Obje oluşturuken ;

 

 class Program
    {
        static void Main(string[] args)
        {
           
            Program z1 = new Program();
            

        }
    }

şeklinde obje oluşturuyoruz. 
Buna araştırdığım kadarıyla instance almak  deniyor. Başka bir video da ise ;
 

class Program
    {

        public Program z1;

        static void Main(string [] args)
        {

            

        }
    }

  şeklinde ki işleme de instance alma dedi. Ama burada yaptığı işlem sadece "z1" adında değişken oluşturmak değil mi ?
Bir de anlamadığım ikinci kısım ise değişken türü nasıl "Program" olabiliyor ? Yani değişken türü olarak "int", "string" vs. biliyorum ama "Program" nasıl bir değişken türü olabiliyor ?

Şimdiden çok teşekkür ederim

111 Görüntülenme

4 Cevap

ÇELİK
20.10.2020 - 04:03

Bu örnek için
i = this;
ile
i = new GameAssets();
aynı ifadedir.
Dolayısı ile sneakHeadSprite verisi nesne aracılığı ile çağrılmıştır.

Sitede yorum yapabilmek için giriş yapın ya da üye olun.

Alpay Palabıyık
19.10.2020 - 11:30

Up 

Sitede yorum yapabilmek için giriş yapın ya da üye olun.

Alpay Palabıyık
18.10.2020 - 17:54

Cevabınız için teşekkür ederim. İkinci sorunun cevabını anladım. Yalnız ilk soru için verdiğiniz cevap sanırım benim sorumun cevabı değil. Constructor methodlara biraz hakimim. Ama benim sorduğum class ismiyle değişken oluşturup instance almak dedi. Hatta örneği de direk yazayım. 

 

public class GameAssets : MonoBehaviour
{

    public  Sprite sneakHeadSprite;

    public static GameAssets i;

    public void Awake()
    {
        i = this;
    }

Burada ki "i" değişkenini başka bir classtan  "sneakHeadSprite" değişkenine ulaşmak için kullandı. Normalde non-static bir değişkene ulaşmak için instance object gerektiğini biliyorum. Yani "sneakHeadSprite" değişkenine başka bir classtan erişebilmek için obje oluşturup o obje ile değişkene ulaşabildiğimizi biliyorum. Ama burada "sneakHeadSprite" değişkenine ulaşabilmek için yine bir değişken kullandı. Ona da burda erişiyor :

 

public class GameHandler : MonoBehaviour {


    

    private void Start() {


        GameObject sneakHeadGameObject = new GameObject();
        SpriteRenderer sneakHeadSpriteRenderer;
        sneakHeadSpriteRenderer  = sneakHeadGameObject.AddComponent<SpriteRenderer>();
        sneakHeadSpriteRenderer.sprite = GameAssets.i.sneakHeadSprite;
        
        

        

        

       
       
    }



}

Burada kafamı karıştıran nokta "sneakHeadSprite" değişkenine ulaşmaya çalışırken obje değil yine değişken kullanması oldu. 
("GameAssets.i.sneakHeadSprite")
 

Sitede yorum yapabilmek için giriş yapın ya da üye olun.

Fırat Alabuga
18.10.2020 - 16:55

class Coords {

public int x, y;

public Coords() {

x = 0;

y = 0;

}

}

Bu yapı instance constructor (yapıcı method) dır.

Aynı durumu yukarıda örnek veriğin durum içinde geçerli kılabilirsin

Diğer sorunun cevabı ise şu şekilde

Program z1 = new Program();

şu cümlenin çevirisi

aslında şudur ; ' kendi türümden(class Program) bir  z1 nesnesi oluşturuyorum. '

demektir.

Sitede yorum yapabilmek için giriş yapın ya da üye olun.

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.