C# ile Geçici Dosya Oluşturmak

Uygulama geliştirirken bazen geçici olarak dosya oluşturmak zorunda kalabiliriz.

Fakat dosya oluşturma ve yazma iznimizin olduğu bir klasör olmasını her zaman garantileyemeyebiliriz.

Ayrıca, oluşturduğumuz dosya ile işimiz bittiğinde silinmesini de kendimizin yönetmesi gerekir.

Aşağıdaki kod ise, Windows‘un geçici dosyalar (temporary files) klasöründe rastgele isimde bir dosya oluşturur. Böylece geçici dosyanın temizlenmesi işini bizim yerimize Windows üstlenir.

public static string GeciciDosyaOlustur(string OnEk, string Uzanti) { if (OnEk == null) throw new ArgumentNullException(“OnEk”); if (Uzanti == null) throw new ArgumentNullException(“Uzanti”);

return Path.Combine(Path.GetTempPath(), String.Format("{0}.{1}.{2}", OnEk, Guid.NewGuid(), Uzanti)); }

XNA - Başlangıç

XNA serimizin ikinci yazısında, Visual Studio 2008‘lerimizi açıyoruz ve yeni bir Windows Game projesi oluşturuyoruz.

Solution Explorer‘a baktığımızda, proje içindeki dosyaları görüyoruz.

XNA Projesi Solution Explorer Penceresi

XNA Oyununu çalıştırdığımızda, başlangıç noktası olarak Program.cs‘deki Program class’ının static void Main() methodu çalıştırılır.

Main() method’unun yaptığı iş basittir;

static void Main(string[] args) { using (GameLoop game = new GameLoop()) { game.Run(); } }</pre>

GameLoop class’ından instance oluşturup, Run() method’unu çağırır.

GameLoop class’ına bakarsak;

public class GameLoop : Microsoft.Xna.Framework.Game
{
    GraphicsDeviceManager graphics;
    SpriteBatch spriteBatch;

    public GameLoop()
    {
        graphics = new GraphicsDeviceManager(this);
        Content.RootDirectory = "Content";
    }

    protected override void Initialize()
    {
        base.Initialize();
    }

    protected override void LoadContent()
    {
        spriteBatch = new SpriteBatch(GraphicsDevice);
    }

    protected override void UnloadContent()
    {
    }

    protected override void Update(GameTime gameTime)
    {
        if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
            this.Exit();

        base.Update(gameTime);
    }

    protected override void Draw(GameTime gameTime)
    {
        GraphicsDevice.Clear(Color.CornflowerBlue);

        base.Draw(gameTime);
    }
}


*LoadContent()* method'u oyunda kullanacağımız grafikleri - sesleri - vs. hafızaya yüklediğimiz yerdir.

*UnloadContent()* method'u ise, *LoadContent()* method'unda yüklediğimiz kaynakları hafızadan sildiğimiz yerdir.

Oyun çalıştığı zaman *LoadContent()* method'u bir defa çalıştırılır. Oyun'dan çıkılırken de *UnloadContent()* method'u bir defa çalıştırılır.

*Update()* method'u, ekrana çizilecek nesnelerin, konum-boy-saydamlık-vs. değerlerinin hesaplandığı yerdir.

*Draw()* method'u ise, nesnelerin ekrana çizim işlemlerinin gerçekleştirildiği yerdir.

.Net Framework sabit olarak **saniyede 60 kare** çizim yapmayı hedefler. *Update()* ve *Draw()* method'larının **saniyede 60 kere** çalıştırılmasını beklemeliyiz.

Şubat 2010 - Seminer Programı

Şubat 2010 ayı içerisinde BilgeAdam - Kadıköy Şube‘de seminerler veriyor olacağım.

Şubat 2010 - BilgeAdam Seminerleri**

Katılım ücretsizdir.

Bu kodda ne yanlış var? – 3

Aşağıdaki kodu çalıştırdığımızda Console’a “Bir”, “İki”, “Üç” yazdığını görüyoruz.

Sizce neden “Dört” elemanı yazılmıyor?

using System; using System.Collections.Generic; using System.Linq; using System.Text;

namespace BuKoddaNeYanlisVar { class Program { private List<string> _items = new List<string>();

    public List&lt;string&gt; Items
    {
        get { return _items.ToList(); }
        set { _items = value; }
    }
    static void Main(string[] args)
    {
        Program program = new Program();
        program.Items = new List&lt;string&gt; { "Bir", "İki", "Üç" };
        program.Items.Add("Dört");
        foreach (var item in program.Items)
            Console.WriteLine(item);
        Console.ReadLine();
    }
} }

C# Uygulamalarında XML Dokümantasyonu Kullanmak

C# ile Uygulama Geliştirirken Yorum Satırlarını Kullanmak yazımda başladığım konuya XML Dokümantasyonunu eklemem gerekir.

Geleneksel C-tarzı yorum satırlarına ilave olarak C# geliştirilen kodların Xml Dokümantasyonunu otomatik olarak çıkartabilmek için, güçlü yorum operatörlerine sahiptir.

Bu yorum operatörleri (///) ile başlayan satırlara yazılır.

Aşağıdaki listedeki operatörler, derleyici (compiler) tarafından tanınır ve desteklenir;

<c> Tek satırı C# kodu olarak işaretler. Örneğin: <c>string AdSoyad = “Engin Polat”;</c> <code> Birden çok satırı C# kodu olarak işaretler. <example> İlgili satırları “örnek kod” olarak işaretler. <exception> Exception sınıfını dokümante eder. (Derleyici(compiler) tarafından kontrol edilir) <include> Başka bir dokümantasyon dosyasından yorum ekler. (Derleyici(compiler) tarafından kontrol edilir) <list> Dokümantasyona liste ekler. <param> Method parametresini dokümante eder. (Derleyici(compiler) tarafından kontrol edilir) <paramref> Kelimenin parametre olduğunu işaretler. (Derleyici(compiler) tarafından kontrol edilir) <permission> Öğeye erişim belirleyicisini dokümante eder. (Derleyici(compiler) tarafından kontrol edilir) <remarks> Öğeye açıklama ekler. <returns> Method’un dönüş tipini dokümante eder. <see> Başka bir parametreye çapraz-referans ekler. (Derleyici(compiler) tarafından kontrol edilir) <seealso> Açıklamaya “buna da bakın” parçası ekler. (Derleyici(compiler) tarafından kontrol edilir) <summary> Öğenin kısa açıklamasını dokümante eder. <value> Özelliği (property) tanımlar.

Örnek olması açısından, aşağıdaki Matematik sınıfını dokümantasyonu ile birlikte yazıyorum;

//Matematik.cs namespace Engin.Polat { ///<summary> ///  Engin.Polat.Matematik sınıfı. ///  İki rakamın toplanmasına yaran ///  Topla method’unu içerir. ///</summary> public class Matematik { ///<summary> ///  İki rakamın toplanmasını sağlar. ///</summary> ///<example>Örnek olarak: Topla(3, 5);</example> ///<returns>Toplama işleminin sonucu (int)</returns> ///<param name=”x”>Toplama işleminin ilk rakamı</param> ///<param name=”y”>Toplama işleminin ikinci rakamı</param> public int Topla(int x, int y) { return x + y; } } }</pre>

Derleme sonucu oluşan Xml dokümanı aşağıdaki gibidir;

<?xml version="1.0"?>
<doc>
    <assembly>
        <name>ConsoleApplication4</name>
    </assembly>
    <members>
        <member name="T:Engin.Polat.Matematik">
            <summary>
                Engin.Polat.Matematik sınıfı.
                İki rakamın toplanmasına yaran
                Topla method'unu içerir.
            </summary>
        </member>
        <member name="M:Engin.Polat.Matematik.Topla(System.Int32,System.Int32)">
            <summary>
                İki rakamın toplanmasını sağlar.
            </summary>
            <example>Örnek olarak: Topla(3, 5);</example>
            <returns>Toplama işleminin sonucu (int)</returns>
            <param name="z">Toplama işleminin ilk rakamı</param>
            <param name="y">Toplama işleminin ikinci rakamı</param>
        </member>
    </members>
</doc>


Dikkat ederseniz, derleyici (compiler) bizim için  ve  elementlerini eklemiştir. Her  element'i name özelliğine sahiptir ve değer olarak öğenin tam adını içerir.

Değerin ilk harfi özel bir anlam taşır;

**T :** *Type*
**F :** *Field*
**M :** *Member*

Engin Polat hakkında

Chief Architect, Microsoft RD, Microsoft MVP

Ada ve Ege'nin babası ;)

Kategoriler

İstatistik

Makale Adedi: 458

Creative Commons Lisansı