কম্পিউটার টিউটোরিয়াল

C#-তে অটো-প্রপার্টিতে ডিফল্ট ভ্যালু দেয়া

C# 5.0 এবং আগে: কনস্ট্রাক্টরে ইনিশিয়ালাইজ

class Demo {
    public Demo() {
        FirstName = "DemoName"; // কনস্ট্রাক্টরে সেট
    }
    
    public string FirstName { get; set; }
}

class Program {
    static void Main() {
        Demo obj = new Demo();
        Console.WriteLine(obj.FirstName); // DemoName
        Console.ReadLine();
    }
}

C# 6.0+ : প্রপার্টি ইনিশিয়ালাইজার (Auto-Property Initializer)

প্রপার্টি ডিক্লেয়ারেশনের সময়ই ডিফল্ট ভ্যালু দেওয়া যায় — ক্লিনার এবং পঠনযোগ্য।

class Demo {
    // সরাসরি ডিফল্ট ভ্যালু অ্যাসাইন
    public string FirstName { get; set; } = "DemoName";
    
    // কমপ্লেক্স এক্সপ্রেশনও ব্যবহার করা যায়
    public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
    public List<string> Tags { get; set; } = new List<string>();
}

class Program {
    static void Main() {
        Demo obj = new Demo();
        Console.WriteLine(obj.FirstName);    // DemoName
        Console.WriteLine(obj.CreatedAt);    // বর্তমান UTC টাইম
        Console.WriteLine(obj.Tags.Count);   // 0
        Console.ReadLine();
    }
}

আউটপুট:

DemoName
2024-01-15 10:30:45
0

Read-Only অটো-প্রপার্টি (C# 6.0+)

public class User {
    // শুধু getter, সেটার নেই — ইনমিউটেবল
    public string Id { get; } = Guid.NewGuid().ToString();
    public DateTime CreatedAt { get; } = DateTime.UtcNow;
    
    // কনস্ট্রাক্টরে সেট করা যায় (শুধু একবার)
    public string Name { get; }
    
    public User(string name) {
        Name = name;
    }
}

init-only প্রপার্টি (C# 9.0+)

public class Person {
    // অবজেক্ট ইনিশিয়ালাইজার সিনট্যাক্সে সেট করা যায়, পরে নয়
    public string FirstName { get; init; }
    public string LastName { get; init; }
}

var p = new Person { FirstName = "John", LastName = "Doe" };
// p.FirstName = "Jane"; // ❌ Compile error: init-only

required মডিফায়ার (C# 11.0+)

public class Product {
    // অবশ্যই অবজেক্ট ইনিশিয়ালাইজারে প্রদান করতে হবে
    public required string Name { get; set; }
    public required decimal Price { get; set; }
}

var p = new Product { Name = "Laptop", Price = 999.99m }; // ✅
// var p2 = new Product(); // ❌ Compile error: required members missing

তুলনা সারসংক্ষেপ

ভার্সনফিচারসিনট্যাক্সমিউটেবল?
≤ C# 5.0কনস্ট্রাক্টর ইনিশিয়ালাইজConstructor bodyহ্যাঁ
C# 6.0Auto-property initializerProp { get; set; } = valহ্যাঁ
C# 6.0Read-only auto-propProp { get; } = valনা (কনস্ট্রাক্টরে সেট)
C# 9.0init-onlyProp { get; init; }শুধু অবজেক্ট ইনিশিয়ালাইজার
C# 11.0requiredrequired Prop { get; set; }হ্যাঁ (বাধ্যতামূলক ইনিশিয়ালাইজ)
  1. C#-এ StringBuilder ডিফল্ট ভ্যালু

  2. C#-এ অ্যারে খালি কীভাবে করবেন?

  3. C#-এ অ্যারে 통해서 লুপ (Loop Through) কীভাবে করবেন?

  4. Tkinter Spinbox-এ ডিফল্ট স্ট্রিং মান সেট কীভাবে করবেন?