সি# প্রোগ্রামিং সি প্রোগ্রামিং পাইথন প্রোগ্রামিং জাভাস্ক্রিপ্ট এইচটিএমএল পিএইচপি এসকিউএল
ফোরাম
 

সি# প্রোগ্রামের গঠন


C# এর প্রধান সাংগঠনিক ধারণাসমূহ হলো program, namespace, type, member এবং assembly। এক বা একাধিক সোর্স ফাইল নিয়ে C# প্রোগ্রাম গঠিত হয়। প্রোগ্রাম টাইপ ঘোষনা করে যা বিভিন্ন ধরণের মেম্বার ধারন করে এবং প্রোগ্রামকে namespace এর মধ্যে সংগঠিত করা যায়।

Class এবং interface হলো type এর উদাহরণ। Field, method, property এবং event হলো member এর উদাহরণ।

C# প্রোগ্রামকে কম্পাইল করা হলে এগুলো দৃশ্যমানভাবে assembly ফাইলের মধ্যে প্যাকেজিং হয়। অ্যাসেম্বলির ফাইল এক্সটেনশন সাধারণত .exe বা .dll হয় এবং এটি নির্ভর করে আপনার C# প্রোগ্রাম বাস্তবায়নের উপরে। অর্থাৎ এটি নির্ভর করে আপনার প্রোগ্রামটি কম্পাইল হওয়ার পরে এটি যথাক্রমে অ্যাপ্লিকেশন অথবা লাইব্রেরিতে পরিণত হবে কিনা তার উপরে।

উদাহরণঃ নিম্নের উদাহরণে Acme.Collections নামের namespace এর মধ্যে Stack নামের একটি class ঘোষণা করা হয়েছে।
using System;
namespace Acme.Collections
{
    public class Stack
    {
        Entry top;
        public void Push(object data) 
        {
            top = new Entry(top, data);
        }

        public object Pop() 
        {
            if (top == null)
            {
                throw new InvalidOperationException();
            }
            object result = top.data;
            top = top.next;
            return result;
        }
        
        class Entry
        {
            public Entry next;
            public object data;
            public Entry(Entry next, object data)
            {
                this.next = next;
                this.data = data;
            }
        }
    }
}

প্রোগ্রামের ব্যাখ্যাঃ

মনেকরি, উপরের উদাহরণের সোর্স কোড acme.cs ফাইলে সংরক্ষিত আছে। নিম্নের কমান্ড লাইনের মাধ্যমে প্রোগ্রামকে কম্পাইল করা হয়।

csc /t:library acme.cs

কোডের কোথাও Main মেথড না থাকায় কোড কম্পাইল শেষে লাইব্রেরিতে পরিণত হয় এবং acme.dill নামে assembly কোড উৎপাদন করে।

আসেম্বলির মধ্যে Intermediate Language (IL) instruction আকারে সম্পাদনযোগ্য কোড এবং মেটাডেটা(metadata) আকারে প্রতীকি তথ্য থাকে। Assembly এর অন্তর্গত IL code সম্পাদিত হওয়ার পূর্বে .NET Common Language Runtime এর Just-In-Time (JIT) compiler এর মাধ্যমে স্বয়ংক্রিয়ভাবে প্রসেসর-ভিত্তিক কোডে রুপান্তরিত হয়।

যেহেতু আসেম্বলি কোড এবং মেটাডেটা উভয়ের মিশ্রণে গঠিত বিভিন্ন কার্যাবলীর স্ব-বিবরনী ইউনিট, সুতরাং C# এ #include ডিরেক্টিভ এবং হেডার ফাইলের প্রয়োজন হয় না। কোন প্রোগ্রামে আসেম্বলিকে রেফারেন্স হিসেবে উল্লেখ করলে প্রোগ্রাম কম্পাইল করার সময় আসেম্বলির অন্তর্ভুক্ত public type এবং member উক্ত C# প্রোগ্রামে স্বয়ংক্রিয়ভাবে যুক্ত হয়ে যায়।

উদাহরণস্বরূপঃ নিম্নের প্রোগ্রামটি acme.dll আসেম্বলি থেকে Acme.Collections.Stack ক্লাস ব্যবহার করে।

উদাহরণঃ
using System;
using Acme.Collections;
class Example
{
    static void Main() 
    {
        Stack s = new Stack();
        s.Push(1);
        s.Push(10);
        s.Push(100);
        Console.WriteLine(s.Pop());
        Console.WriteLine(s.Pop());
        Console.WriteLine(s.Pop());
    }
}

এই প্রোগ্রামটি যদি example.cs ফাইলে সংরক্ষণ করা হয় এবং example.cs কে যখন কম্পাইল করা হবে তখন acme.dl অ্যাসেম্বলিকে নিম্নের ন্যায় কম্পাইলার এর /r অপশনের মাধ্যমে রেফার করা যাবে।

csc /r:acme.dll example.cs

এটি example.cs নামে একটি সম্পাদনযোগ্য অ্যাসেম্বলি তৈরি করে যা রান করানো হলে নিম্নের আউটপুট উৎপন্ন হয়।

ফলাফল
100
10
1

C# একটি প্রোগ্রামের টেক্সটকে বিভিন্ন সোর্স ফাইলের মধ্যে সংরক্ষনের সম্মতি দেয়। যখন একাধিক ফাইলের একটি C# প্রোগ্রাম কম্পাইল করানো হয়, তখন সবগুলো সোর্স ফাইল একত্রে প্রসেস হয় এবং সোর্স ফাইলগুলি স্বাধীনভাবে একে অপরের সাথে রেফারেন্স হিসেবে নিজেদেরকে যুক্ত করতে পারে।

এই প্রক্রিয়াটি এমনভাবে সম্পন্ন হয় যেন প্রক্রিয়াকরণ এর পূর্বে সবগুলো সোর্স ফাইল একটি বৃহৎ ফাইলের মধ্যে সংযুক্ত ছিল।