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

C#-তে স্ট্যাটিক কনস্ট্রাক্টর কখন কল হয়?

স্ট্যাটিক কনস্ট্রাক্টর আহ্বান

স্ট্যাটিক কনস্ট্রাক্টর অটোমেটিকভাবে কল হয়:

  • প্রথম ইনস্ট্যান্স তৈরি হওয়ার পূর্বে, অথবা
  • যেকোনো স্ট্যাটিক মেম্বার রেফারেন্স করার পূর্বে

বৈশিষ্ট্য

  • অ্যাক্সেস মডিফায়ার নেই (public, private লিখা যায় না)
  • প্যারামিটার নেয় না
  • এক ক্লাসে শুধু একটি স্ট্যাটিক কনস্ট্রাক্টর থাকতে পারে
  • ইনহেরিট বা ওভারলোড করা যায় না
  • সরাসরি কল করা যায় না — শুধু CLR কল করে
  • থ্রেড-সেফ (CLR গ্যারান্টি দেয় একবারই এক্সিকিউট হবে)

উদাহরণ

using System;

class Program {
    // স্ট্যাটিক কনস্ট্রাক্টর
    static Program() {
        Console.WriteLine("Static Constructor Executed");
        // স্ট্যাটিক ফিল্ড ইনিশিয়ালাইজেশন, লগিং, কনফিগ লোড ইত্যাদি
    }
    
    static void Main() {
        Console.WriteLine("Main method started");
        // প্রথম স্ট্যাটিক অ্যাক্সেস বা ইনস্ট্যান্সিয়েশন এখানে
        var p = new Program();
        Console.WriteLine("Instance created");
        Console.ReadLine();
    }
}

আউটপুট:

Static Constructor Executed
Main method started
Instance created

ব্যবহারের পরিস্থিতি

  • স্ট্যাটিক ফিল্ড ইনিশিয়ালাইজেশন (খাস করে জটিল লজিকের)
  • লগ ফাইল খোলা, কনফিগারেশন লোড করা
  • আনম্যানেজড রিসোর্স সেটআপ (DLL ইমপোর্ট ইত্যাদি)
  • সিঙ্গলটন প্যাটার্নে ইনস্ট্যান্স তৈরি

উদাহরণ: সিঙ্গলটনে স্ট্যাটিক কনস্ট্রাক্টর

public sealed class Singleton {
    private static readonly Singleton _instance;
    
    // স্ট্যাটিক কনস্ট্রাক্টর - লেজি ইনিিয়ালাইজেশন নিশ্চিত করে
    static Singleton() {
        _instance = new Singleton();
    }
    
    private Singleton() { }
    
    public static Singleton Instance => _instance;
}

স্ট্যাটিক কনস্ট্রাক্টর vs ইনস্ট্যান্স কনস্ট্রাক্টর

বিষয়Static ConstructorInstance Constructor
কল ফ্রিকোয়েন্সিএকবার (প্রति টাইপ)প্রতি ইনস্ট্যান্সে একবার
অ্যাক্সেস মডিফায়ারনেইpublic/private/protected...
প্যারামিটারনেইহতে পারে
this/base ব্যবহারনাহ্যাঁ
ইনস্ট্যান্স মেম্বার অ্যাক্সেসনাহ্যাঁ

সতর্কতা

  • স্ট্যাটিক কনস্ট্রাক্টরে এক্সেপশন ফেললে টাইপ अनইউজেবল হয়ে যায় (TypeInitializationException)
  • সাইক্লিক ডিপেন্ডেন্সি (দুই স্ট্যাটিক ক্লাস একে অপর রেফারেন্স) ডেডলক সৃষ্টি করতে পারে
  • বেন্চমার্কিং-এ স্ট্যাটিক কনস্ট্রাক্টর টাইম কাউন্ট হয় না (JIT-এ হলেও)
  1. ম্যাকেও FaceTime করার পূর্ণ গাইড

  2. স্ক্রিন কভার থাকলে Siri কীভাবে কল করবেন

  3. WhatsApp-এ ভিডিও কল করার পদ্ধতি

  4. কম আইফোন কল ভলিউম ফিক্স করুন: দ্রুত, विश्वস্ত সমাধান