C#: ভাষার মূল ধারণা, .NET MAUI এবং Xamarin উন্নয়ন

লেখক: IT Sectr প্রকাশিত: 2026-02-10 পড়ার সময়: 12 মিনিট

C# হল মাইক্রোসফটের একটি আধুনিক অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং ভাষা, যা মোবাইল ডেভেলপমেন্টে Xamarin এবং .NET MAUI প্ল্যাটফর্মের ভিত্তি হিসেবে কাজ করে। একীভূত .NET ইকোসিস্টেমের কারণে, ডেভেলপাররা শেয়ার্ড C# এবং XAML কোড ব্যবহার করে iOS এবং Android-এর জন্য মোবাইল অ্যাপ্লিকেশন তৈরি করতে পারেন। TIOBE সূচক (2026) অনুসারে, C# সব প্রোগ্রামিং ভাষার মধ্যে জনপ্রিয়তায় ৪র্থ স্থানে রয়েছে। আরও জানুন Microsoft C# ডকুমেন্টেশন-এ।

মূল পয়েন্ট

  • C# — .NET প্ল্যাটফর্মের জন্য মাইক্রোসফটের অবজেক্ট-ওরিয়েন্টেড ভাষা
  • .NET MAUI — Xamarin-এর উত্তরসূরি, iOS, Android, Windows, macOS-এর জন্য একক প্রজেক্ট
  • XAML — ডিক্লারেটিভ UI মার্কআপ, সব .NET প্ল্যাটফর্মে শেয়ার্ড
  • CLR — JIT/AOT কম্পাইলেশন এবং আবর্জনা সংগ্রহ সহ Common Language Runtime
  • LINQ — কালেকশন এবং ডেটাবেসের সাথে কাজ করার জন্য Language Integrated Query

C# কী?

C# (উচ্চারণ "সি শার্প") হল একটি নিরাপদ টাইপ সিস্টেম সহ অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং ভাষা, যা মাইক্রোসফট ২০০০ সালে অ্যান্ডার্স হেইলসবার্গের নেতৃত্বে তৈরি করেছে। নামটি সঙ্গীত স্বরলিপি (শার্প — স্বর উঁচু করা) দ্বারা অনুপ্রাণিত। C# .NET প্ল্যাটফর্মে চলে, যার মধ্যে Common Language Runtime (CLR) এবং একটি বিস্তৃত ক্লাস লাইব্রেরি (BCL — Base Class Library) অন্তর্ভুক্ত।

মোবাইল ডেভেলপমেন্টে, C# দুটি প্রযুক্তির মাধ্যমে ব্যবহৃত হয়: Xamarin (২০১১–২০২৪) এবং এর উত্তরসূরি .NET MAUI (২০২২+)। Xamarin শেয়ার্ড C# কোড সহ নেটিভ Android এবং iOS অ্যাপ্লিকেশন তৈরি করতে সক্ষম করেছিল, প্ল্যাটফর্ম-নির্দিষ্ট প্রজেক্ট আলাদা করে। .NET MAUI শেয়ার্ড XAML মার্কআপ এবং প্ল্যাটফর্ম ইন্টারফেসের মাধ্যমে নেটিভ API-তে অ্যাক্সেস সহ সব প্ল্যাটফর্মকে এক প্রজেক্টে একত্রিত করে।

C#-এর একটি মূল বৈশিষ্ট্য হল dynamic-এর মাধ্যমে ডায়নামিক ডিসপ্যাচ, var কীওয়ার্ড (টাইপ ইনফারেন্স) এবং একটি শক্তিশালী জেনেরিক্স সিস্টেম সহ কঠোর স্ট্যাটিক টাইপিং। C# একটি সম্পূর্ণ ম্যানেজড ভাষা: মেমোরি আবর্জনা সংগ্রহকারী (GC) দ্বারা পরিচালিত হয়, অ্যারে সীমা পরীক্ষা করা হয়, অপ্রারম্ভিক ভেরিয়েবল নিষিদ্ধ। এটি AOT কম্পাইলেশনের মাধ্যমে তুলনীয় পারফরম্যান্স সহ C++-এর চেয়ে C#-কে নিরাপদ করে তোলে।

C# সংস্করণ এবং বিবর্তন

C# 1.0 (২০০০) — মৌলিক OOP ভাষা। C# 3.0 (২০০৭) — LINQ, ল্যাম্বডা এক্সপ্রেশন, এক্সটেনশন মেথড। C# 6.0 (২০১৫) — স্ট্রিং ইন্টারপোলেশন, null-conditional অপারেটর। C# 8.0 (২০১৯) — nullable reference types (নাল নিরাপত্তা সক্রিয়), async streams, ডিফল্ট ইন্টারফেস মেথড। C# 10 (২০২১) — global usings, file-scoped namespaces, record struct। C# 12 (২০২৩) — primary constructors, collection expressions, interceptors। প্রতিটি সংস্করণ মোবাইল ডেভেলপমেন্টের জন্য প্রাসঙ্গিক উন্নতি আনে।

C# সংস্করণবছরমূল বৈশিষ্ট্যমোবাইল ডেভেলপমেন্টের জন্য গুরুত্ব
3.0২০০৭LINQ, ল্যাম্বডাকালেকশন এবং ডেটাবেসের সাথে সরলীকৃত কাজ
6.0২০১৫?. (null-conditional), স্ট্রিং ইন্টারপোলেশননিরাপদ প্রপার্টি অ্যাক্সেস, পঠনযোগ্য স্ট্রিং
8.0২০১৯Nullable reference types, async streamsনাল নিরাপত্তা, অ্যাসিঙ্ক্রোনাস ডেটা স্ট্রিম
10২০২১Record struct, global usingsভ্যালু টাইপ, বয়লারপ্লেট হ্রাস
12২০২৩Primary constructors, collection expressionsসংক্ষিপ্ত ক্লাস এবং কালেকশন নোটেশন

C# সিনট্যাক্স: টাইপ, ক্লাস এবং LINQ

C# সিনট্যাক্স C-সদৃশ, কঠোরভাবে টাইপকৃত। প্রিমিটিভ সহ সবকিছুই একটি অবজেক্ট (int, double, bool — এগুলি ValueType থেকে প্রাপ্ত স্ট্রাক্ট)। C# টাইপগুলিকে ভ্যালু টাইপ (int, double, bool, struct, enum — স্ট্যাকে সংরক্ষিত) এবং রেফারেন্স টাইপ (string, class, interface, delegate, array, record — হিপে সংরক্ষিত) এ ভাগ করে। Nullable টাইপ (int?) ভ্যালু টাইপের জন্য null অনুমতি দেয়।

ডেটা টাইপ এবং ক্লাস

C# ক্লাস (class), স্ট্রাক্ট (struct), রেকর্ড (record), ইন্টারফেস (interface), এনাম (enum) এবং ডেলিগেট (delegate) সমর্থন করে। record হল একটি অপরিবর্তনীয় রেফারেন্স টাইপ যার ভ্যালু-ভিত্তিক সমতা (দুটি রেকর্ড সমান যদি তাদের সব ফিল্ড সমান হয়)। record struct — C# ১০-এ প্রবর্তিত record-এর ভ্যালু সংস্করণ। primary constructors (C# ১২) ঘোষণা এবং আরম্ভকে এক লাইনে একত্রিত করে।

csharp
// C#-এ মৌলিক টাইপ এবং ক্লাস
using System;
using System.Collections.Generic;

// প্রাইমারি কনস্ট্রাক্টর সহ রেকর্ড (C# 12)
public record User(int Id, string Name, string Email);

// Nullable প্রপার্টি সহ ক্লাস
public class AppConfig
{
    public string AppName { get; init; }
    public string? ApiUrl { get; set; } // nullable reference type
    public int Version { get; init; }

    // এক্সপ্রেশন বডি সহ মেথড
    public string GetDisplayName() => $"{AppName} v{Version}";
}

// এক্সটেনশন মেথড
public static class StringExtensions
{
    public static bool IsValidEmail(this string email) =>
        email.Contains("@") && email.Contains(".");
}

// ব্যবহার
var user = new User(1, "Alice", "alice@example.com");
bool validEmail = user.Email.IsValidEmail();

প্রাইমারি কনস্ট্রাক্টর সহ রেকর্ড User স্বয়ংক্রিয়ভাবে equals, hashCode, ToString, Deconstruct এবং with-কপি তৈরি করে। init-only সেটার (AppName) শুধুমাত্র আরম্ভকারীতে মান সেট করার অনুমতি দেয়। এক্সপ্রেশন বডি (=>) সরল মেথডের জন্য সংক্ষিপ্ত নোটেশন। এক্সটেনশন মেথড IsValidEmail ইনহেরিটেন্স ছাড়া স্ট্রিং-এ একটি মেথড যোগ করে।

LINQ — Language Integrated Query

LINQ হল কালেকশন, ডেটাবেস, XML-এর জন্য একটি বিল্ট-ইন কোয়েরি ভাষা। LINQ to Objects — IEnumerable কালেকশনের জন্য কোয়েরি। LINQ to SQL — ডেটাবেসের জন্য। LINQ to XML — XML-এর জন্য। সিনট্যাক্স কোয়েরি (from u in users where u.Age > 18 select u) এবং মেথড (users.Where(u => u.Age > 18).Select(u => u)) হতে পারে। লেজি লোডিং (বিলম্বিত এক্সিকিউশন): ঘোষণার সময় নয়, পুনরাবৃত্তির সময় কোয়েরি এক্সিকিউট হয়।

csharp
// কালেকশনে LINQ কোয়েরি
using System.Linq;

var users = new List<User>
{
    new User(1, "Alice", "alice@example.com"),
    new User(2, "Bob", "bob@test.com"),
    new User(3, "Charlie", "charlie@example.com"),
};

// কোয়েরি সিনট্যাক্স
var filteredUsers = from u in users
                     where u.Email.Contains("example")
                     orderby u.Name
                     select u;

// একাধিক অপারেশন সহ মেথড সিনট্যাক্স
var result = users
    .Where(u => u.Email.Contains("example"))
    .OrderBy(u => u.Name)
    .Select(u => new { u.Name, u.Email })
    .ToList();

// GroupBy এবং এগ্রিগেশন
var emailsByDomain = users
    .GroupBy(u => u.Email.Split('@')[1])
    .Select(g => new { Domain = g.Key, Count = g.Count() });

// async স্ট্রিম সহ LINQ (IAsyncEnumerable)
await foreach (var user in GetUsersAsync())
{
    Console.WriteLine(user.Name);
}

async IAsyncEnumerable<User> GetUsersAsync()
{
    yield return new User(1, "Alice", "alice@example.com");
    await Task.Delay(100);
    yield return new User(2, "Bob", "bob@test.com");
}

LINQ কোয়েরি filteredUsers ইমেইল ডোমেন দ্বারা ব্যবহারকারীদের ফিল্টার করে এবং নাম অনুসারে সাজায়। মেথড সিনট্যাক্স .Where().OrderBy().Select() — কোয়েরি সিনট্যাক্সের সমতুল্য মেথডের চেইন। GroupBy ইমেইল ডোমেন দ্বারা গ্রুপ করে। IAsyncEnumerable (C# 8) — IEnumerable-এর অ্যাসিঙ্ক্রোনাস সংস্করণ, মোবাইল অ্যাপ্লিকেশনে স্ট্রিমিং ডেটা লোডিং এর জন্য উপযোগী।

Xamarin এবং .NET MAUI: আর্কিটেকচার

Xamarin (২০১১–২০২৪) C#-এ ক্রস-প্ল্যাটফর্ম মোবাইল ডেভেলপমেন্টের জন্য মাইক্রোসফটের প্রথম প্ল্যাটফর্ম ছিল। এটি Xamarin.Android (Linux কার্নেলের ওপর Mono রানটাইম) এবং Xamarin.iOS (iOS-এ JIT নিষেধাজ্ঞার কারণে ARM64-তে AOT কম্পাইলেশন) নিয়ে গঠিত ছিল। Xamarin.Forms ছিল XAML মার্কআপ সহ একটি শেয়ার্ড UI লেয়ার, যা এলিমেন্টকে নেটিভ (Android View / iOS UIView) এ অনুবাদ করত।

.NET MAUI (.NET Multi-platform App UI) হল Xamarin-এর উত্তরসূরি, যা ২০২২ সালে প্রকাশিত হয়েছে। একক .csproj প্রজেক্ট, একটি XAML মার্কআপ, একটি এন্ট্রি পয়েন্ট। ৫টি প্ল্যাটফর্ম সমর্থন করে: iOS, Android, Windows (WinUI 3), macOS (Mac Catalyst), Tizen। .NET MAUI Renderer-এর পরিবর্তে নতুন Handler আর্কিটেকচার ব্যবহার করে: প্রতিটি XAML এলিমেন্ট প্ল্যাটফর্ম হ্যান্ডলারের মাধ্যমে নেটিভ কম্পোনেন্টে ম্যাপ হয়।

xml
<!-- MainPage.xaml — .NET MAUI-র ডিক্লারেটিভ UI -->
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="MyApp.MainPage">

    <ScrollView>
        <VerticalStackLayout Padding="30" Spacing="25">
            <Label Text="Welcome to .NET MAUI!"
                   FontSize="32"
                   HorizontalOptions="Center"/>

            <Entry x:Name="NameEntry"
                   Placeholder="Enter your name"/>

            <Button Text="Submit"
                    Clicked="OnSubmitClicked"
                    BackgroundColor="#512BD4"
                    TextColor="White"
                    CornerRadius="8"/>

            <CollectionView x:Name="ItemsView"
                          SelectionMode="Single">
                <CollectionView.ItemTemplate>
                    <DataTemplate>
                        <Grid Padding="10">
                            <Label Text="{Binding Name}"
                                   FontSize="18"/>
                        </Grid>
                    </DataTemplate>
                </CollectionView.ItemTemplate>
            </CollectionView>
        </VerticalStackLayout>
    </ScrollView>
</ContentPage>

.NET MAUI XAML মার্কআপ UI-কে ডিক্লারেটিভভাবে বর্ণনা করে। ScrollView — স্ক্রলিং, VerticalStackLayout — উল্লম্ব বিন্যাস। Label, Entry (টেক্সট ইনপুট), Button — মৌলিক এলিমেন্ট। CollectionView — আইটেম প্রদর্শনের জন্য DataTemplate সহ ভার্চুয়ালাইজড তালিকা। Clicked ইভেন্ট MainPage.xaml.cs কোড-বিহাইন্ডে OnSubmitClicked মেথডের সাথে বাঁধে।

csharp
// MainPage.xaml.cs — C# লজিক সহ কোড-বিহাইন্ড
namespace MyApp;

public partial class MainPage : ContentPage
{
    private readonly List<User> _users = new();

    public MainPage()
    {
        InitializeComponent();
        LoadUsers();
    }

    private async void OnSubmitClicked(object? sender, EventArgs e)
    {
        var name = NameEntry.Text?.Trim();

        if (string.IsNullOrEmpty(name))
        {
            await DisplayAlert("Error", "Name is required", "OK");
            return;
        }

        _users.Add(new User(_users.Count + 1, name, $"{name}@example.com"));
        ItemsView.ItemsSource = null;
        ItemsView.ItemsSource = _users;
        NameEntry.Text = string.Empty;
    }

    private async void LoadUsers()
    {
        var apiService = new ApiService();
        var users = await apiService.GetUsersAsync();
        _users.AddRange(users);
        ItemsView.ItemsSource = _users;
    }
}

কোড-বিহাইন্ড MainPage ContentPage থেকে প্রাপ্ত। InitializeComponent() XAML মার্কআপ লোড করে। NameEntry.Text?.Trim() — নিরাপদ অ্যাক্সেসের জন্য null-conditional অপারেটর (?.)। DisplayAlert — নেটিভ ডায়ালগ। ItemsView.ItemsSource — কালেকশনে বাইন্ডিং। অ্যাসিঙ্ক্রোনাস লোডিংয়ের জন্য async/await। জটিল প্রজেক্টের জন্য MVVM (Model-View-ViewModel) প্যাটার্ন সুপারিশ করা হয়।

মোবাইল ডেভেলপমেন্টে C#

C# মোবাইল ডেভেলপমেন্ট তিনটি পদ্ধতি অফার করে: .NET MAUI (ক্রস-প্ল্যাটফর্ম UI), Xamarin (লিগ্যাসি) এবং Unity (গেম)। নতুন প্রজেক্টের জন্য .NET MAUI সুপারিশকৃত পথ। C# অ্যাপ্লিকেশন Intermediate Language (IL)-এ কম্পাইল হয়, যা NativeAOT (.NET MAUI) বা Mono (Xamarin) নেটিভ ARM কোডে রূপান্তর করে। iOS-এর AOT কম্পাইলেশন প্রয়োজন — JIT Apple নীতিমালা দ্বারা নিষিদ্ধ।

নেটিভ API-তে অ্যাক্সেস

.NET MAUI ইন্টারফেসের মাধ্যমে প্ল্যাটফর্ম সক্ষমতার সাথে কাজ করার জন্য একীভূত API প্রদান করে: IAccelerometer, IBarometer, IBattery, IConnectivity, IDeviceInfo, IFilePicker, IGeolocation, IMediaPicker, IPermissions, ISpeechRecognizer, IVibration। প্ল্যাটফর্ম-নির্দিষ্ট কোডের জন্য শর্তসাপেক্ষ কম্পাইলেশন (#if ANDROID, #if IOS) বা আংশিক ক্লাস ব্যবহার করা হয়।

csharp
// DI সহ .NET MAUI-তে জিওলোকেশন
public class LocationService
{
    private readonly IGeolocation _geolocation;

    public LocationService(IGeolocation geolocation)
    {
        _geolocation = geolocation;
    }

    public async Task<Location?> GetCurrentLocation()
    {
        try
        {
            var permission = await CheckAndRequestPermission();
            if (permission != PermissionStatus.Granted)
                return null;

            var location = await _geolocation.GetLastKnownLocationAsync();

            if (location == null)
            {
                location = await _geolocation.GetLocationAsync(new GeolocationRequest
                {
                    DesiredAccuracy = GeolocationAccuracy.Medium,
                    Timeout = TimeSpan.FromSeconds(10)
                });
            }

            return location;
        }
        catch (Exception ex)
        {
            Debug.WriteLine($"অবস্থান ত্রুটি: {ex.Message}");
            return null;
        }
    }

    private async Task<PermissionStatus> CheckAndRequestPermission()
    {
        var status = await Permissions.CheckStatusAsync<Permissions.LocationWhenInUse>();

        if (status != PermissionStatus.Granted)
        {
            status = await Permissions.RequestAsync<Permissions.LocationWhenInUse>();
        }

        return status;
    }
}

LocationService DI (IGeolocation-এর নির্ভরতা ইনজেকশন) ব্যবহার করে। CheckAndRequestPermission জিওলোকেশন অনুমতি পরীক্ষা করে এবং অনুরোধ করে। GetLastKnownLocationAsync — দ্রুত (কিন্তু সবসময় নির্ভুল নয়) প্রতিক্রিয়া, GetLocationAsync — নির্ভুলতা এবং টাইমআউট প্যারামিটার সহ অনুরোধ। nullable reference types সহ null-চেক (location == null)। try-catch প্ল্যাটফর্ম ব্যতিক্রমগুলি পরিচালনা করে।

মোবাইলে C#-এর পারফরম্যান্স

C# মোবাইল ডিভাইসে Android-এ Java/Kotlin এবং iOS-এ Swift-এর তুলনীয় পারফরম্যান্স দেখায়। NativeAOT (.NET 8+) IL মধ্যস্থ স্তর ছাড়া C#-কে সরাসরি নেটিভ কোডে কম্পাইল করে — এটি স্টার্টআপ টাইম ৫০% কমায় এবং মেমোরি খরচ হ্রাস করে। .NET MAUI-তে GC ছোট বিরতি (Workstation GC) সহ মোবাইল প্ল্যাটফর্মের জন্য অপ্টিমাইজড। APK আকার ~২০-৩০ MB (NativeAOT সহ)।

প্যারামিটারXamarin.NET MAUI
আর্কিটেকচারXamarin.Android + Xamarin.iOSএকক .csproj প্রজেক্ট
UI রেন্ডারিংRenderer (Xamarin.Forms)Handler (.NET MAUI)
কম্পাইলেশনMono JIT (Android), AOT (iOS)NativeAOT (সব প্ল্যাটফর্ম)
অবস্থারক্ষণাবেক্ষণ মোডসক্রিয় উন্নয়ন
প্ল্যাটফর্মAndroid, iOS, WindowsAndroid, iOS, Windows, macOS, Tizen

.NET প্ল্যাটফর্ম এবং CLR

.NET প্ল্যাটফর্ম ম্যানেজড কোড এক্সিকিউট করার জন্য একটি ইকোসিস্টেম, যার মধ্যে CLR (Common Language Runtime), BCL (Base Class Library), সার্ভার ডেভেলপমেন্টের জন্য ASP.NET Core এবং মোবাইল অ্যাপ্লিকেশনের জন্য .NET MAUI অন্তর্ভুক্ত। .NET 8+ সব ধরনের অ্যাপ্লিকেশনের জন্য একটি একীভূত প্ল্যাটফর্ম: মোবাইল, ডেস্কটপ, ওয়েব, ক্লাউড, IoT, গেম (Unity)।

CLR হল একটি ভার্চুয়াল মেশিন যা CIL (Common Intermediate Language) কোড এক্সিকিউট করে। C#, VB.NET, F# CIL-এ কম্পাইল হয়। CLR-এর JIT কম্পাইলার প্রথম মেথড কলের সময় CIL-কে মেশিন কোডে রূপান্তর করে। NativeAOT (প্রি-কম্পাইলেশন) বিল্ড টাইমে CIL-কে নেটিভ কোডে কম্পাইল করে — মোবাইল প্ল্যাটফর্মের জন্য আদর্শ যেখানে JIT সীমাবদ্ধ হতে পারে (iOS)।

.NET-এর আবর্জনা সংগ্রহকারী GC জেনারেশনাল (জেনারেশন ০, ১, ২), স্বয়ংক্রিয়ভাবে অব্যবহৃত অবজেক্ট মুক্ত করে। মোবাইল অ্যাপ্লিকেশনের জন্য ন্যূনতম বিরতি সহ Workstation GC সুপারিশ করা হয়। GC UI থ্রেড ব্লক না করে, একটি পৃথক থ্রেডে ঘটে। Background GC — ইন্টারঅ্যাকটিভ অ্যাপ্লিকেশনের জন্য বিরতি কমায় এমন ব্যাকগ্রাউন্ড সংগ্রহকারী।

C# ডেভেলপার টুলস

C# ডেভেলপার টুলস-এর মধ্যে Visual Studio, .NET SDK, dotnet CLI, NuGet, JetBrains Rider অন্তর্ভুক্ত। Visual Studio 2022 হল প্রধান IDE যার XAML ডিজাইনার, ম্যানেজড এবং নেটিভ কোড ডিবাগার, CPU/মেমোরি প্রোফাইলার রয়েছে। .NET SDK-তে csc কম্পাইলার, dotnet CLI (dotnet new, dotnet build, dotnet publish, dotnet test) অন্তর্ভুক্ত।

NuGet হল .NET-এর প্যাকেজ ম্যানেজার, JS-এর জন্য npm-এর মতো। ৩০০,০০০+ প্যাকেজ, যার মধ্যে CommunityToolkit.Maui (UI কম্পোনেন্ট), SQLite-net (ডেটাবেস), Firebase Cloud Messaging, ZXing.Net.Maui (QR কোড) অন্তর্ভুক্ত। .NET MAUI Community Toolkit — ডেভেলপমেন্ট দ্রুত করার জন্য আচরণ, কনভার্টার, অ্যানিমেশনের সেট। RestSharp এবং Refit — HTTP ক্লায়েন্ট। Prism এবং MVVM Community Toolkit — আর্কিটেকচারাল ফ্রেমওয়ার্ক।

xml
<!-- .csproj — .NET MAUI প্রজেক্ট কনফিগারেশন -->
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFrameworks>net8.0-android;net8.0-ios;net8.0-maccatalyst</TargetFrameworks>
    <OutputType>Exe</OutputType>
    <UseMaui>true</UseMaui>
    <ApplicationTitle>MyMAUIApp</ApplicationTitle>
    <ApplicationId>com.example.mymauiapp</ApplicationId>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="CommunityToolkit.Maui" Version="9.0.0" />
    <PackageReference Include="sqlite-net-pcl" Version="1.9.172" />
    <PackageReference Include="Refit" Version="7.0.0" />
  </ItemGroup>

</Project>

.csproj ফাইলটি .NET MAUI প্রজেক্ট কনফিগারেশন। TargetFrameworks টার্গেট প্ল্যাটফর্ম তালিকাভুক্ত করে। UseMaui MAUI SDK সক্রিয় করে। PackageReference NuGet থেকে নির্ভরতা নির্দিষ্ট করে। CommunityToolkit.Maui UI কম্পোনেন্ট (টোস্ট, স্ন্যাকবার, Popup) প্রদান করে। sqlite-net-pcl একটি লোকাল ডেটাবেস। Refit ইন্টারফেস-ভিত্তিক টাইপকৃত HTTP ক্লায়েন্ট। dotnet build/publish সব প্ল্যাটফর্মের জন্য অ্যাপ্লিকেশন তৈরি করে।

প্রায়শই জিজ্ঞাসিত প্রশ্ন

C# কী?

C# হল মাইক্রোসফটের (২০০০) একটি অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং ভাষা, যা .NET প্ল্যাটফর্মে (CLR) চলে। Xamarin এবং .NET MAUI-র মাধ্যমে মোবাইল ডেভেলপমেন্টের জন্য ব্যবহৃত হয়। কঠোর স্ট্যাটিক টাইপিং, স্বয়ংক্রিয় মেমোরি ব্যবস্থাপনা (GC), LINQ, async/await এবং জেনেরিক্স একত্রিত করে। TIOBE সূচকে (২০২৬) ৪র্থ স্থানে রয়েছে। অ্যান্ডার্স হেইলসবার্গ দ্বারা উন্নীত।

Xamarin কীভাবে .NET MAUI থেকে আলাদা?

Xamarin ছিল পূর্বসূরি (২০১১-২০২৪), প্রজেক্ট Xamarin.Android এবং Xamarin.iOS-এ বিভক্ত করত। .NET MAUI (২০২২+) হল শেয়ার্ড XAML মার্কআপ, Renderer-এর পরিবর্তে Handler আর্কিটেকচার এবং ৫টি প্ল্যাটফর্ম (iOS, Android, Windows, macOS, Tizen) সমর্থন সহ একক .csproj প্রজেক্ট। Xamarin রক্ষণাবেক্ষণ মোডে চলে গেছে, নতুন প্রজেক্ট .NET MAUI-তে তৈরি হয়। NativeAOT শুধুমাত্র .NET MAUI-তে উপলব্ধ।

C# মোবাইল প্ল্যাটফর্মে কীভাবে কাজ করে?

C# CIL (Common Intermediate Language)-এ কম্পাইল হয়, যা NativeAOT (.NET MAUI) বা Mono (Xamarin) নেটিভ ARM কোডে রূপান্তর করে। Android IL এক্সিকিউট করতে Mono রানটাইম (Xamarin) বা NativeAOT (.NET MAUI) ব্যবহার করে। iOS-এর AOT কম্পাইলেশন প্রয়োজন — JIT Apple দ্বারা নিষিদ্ধ। .NET MAUI ইন্টারফেসের মাধ্যমে প্ল্যাটফর্ম বাস্তবায়ন সহ ক্যামেরা, GPS, সেন্সরের জন্য একীভূত API প্রদান করে।

C# কোন ডেটা টাইপ সমর্থন করে?

C# টাইপকে ভ্যালু টাইপ (int, double, bool, char, struct, enum — স্ট্যাক) এবং রেফারেন্স টাইপ (string, class, interface, array, delegate, record — হিপ) এ ভাগ করে। Nullable টাইপ (int?) ভ্যালু টাইপের জন্য null অনুমতি দেয়। record (C# 9) — ভ্যালু-ভিত্তিক সমতা সহ অপরিবর্তনীয় রেফারেন্স টাইপ। record struct (C# 10) — ভ্যালু সংস্করণ। dynamic — ডায়নামিক টাইপিং। var — কম্পাইলার টাইপ ইনফারেন্স।

C# মোবাইল ডেভেলপমেন্টের জন্য কী টুলস ব্যবহার করা হয়?

Visual Studio 2022 (Windows) এবং Visual Studio for Mac — XAML ডিজাইনার, ডিবাগার এবং প্রোফাইলার সহ প্রধান IDE। .NET SDK — csc কম্পাইলার, dotnet CLI, MSBuild। NuGet — প্যাকেজ ম্যানেজার (৩০০,০০০+)। CommunityToolkit.Maui — UI কম্পোনেন্ট। JetBrains Rider — বিকল্প IDE। পরীক্ষা: xUnit, NUnit, Moq। CI/CD: Azure DevOps, GitHub Actions।

সারাংশ

  • C# — GC, LINQ এবং কঠোর টাইপিং সহ .NET প্ল্যাটফর্মের জন্য মাইক্রোসফটের অবজেক্ট-ওরিয়েন্টেড ভাষা
  • .NET MAUI — একক প্রজেক্ট, Handler আর্কিটেকচার এবং ৫ প্ল্যাটফর্ম সহ Xamarin-এর উত্তরসূরি
  • XAML — C# কোড-বিহাইন্ড সহ সব প্ল্যাটফর্মে শেয়ার্ড ডিক্লারেটিভ UI মার্কআপ
  • LINQ — লেজি ইভালুয়েশন সহ কালেকশন, ডেটাবেস এবং XML-এর জন্য বিল্ট-ইন কোয়েরি ভাষা
  • NativeAOT — নেটিভ কোডে প্রি-কম্পাইলেশন, স্টার্টআপ টাইম ৫০% হ্রাস করে
  • NuGet — .NET MAUI এবং Xamarin-এর জন্য ৩০০,০০০+ লাইব্রেরি সহ প্যাকেজ ম্যানেজার
  • Visual Studio এবং dotnet CLI — বিল্ড, টেস্ট এবং প্রকাশনার জন্য প্রধান টুলস

আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব

IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।

প্রকল্প নিয়ে আলোচনা করুন

আরও পড়ুন