C# & .NET 8 పరిచయం, ఆర్కిటెక్చర్ & డెవలప్‌మెంట్ ఎన్విరాన్‌మెంట్

⚡ Modern C# 12 / .NET 8 LTS 🟢 Chapter 01 of 20 📂 Phase 01: C# ఫండమెంటల్స్ & బేసిక్స్ 📅 2026 Academic Edition
📌 Covered in this chapter: Anders Hejlsberg & C# చరిత్ర · .NET ఆర్కిటెక్చర్ (.NET Framework vs Core vs .NET 8) · CLR, IL, JIT కంపైలేషన్ · .NET SDK vs Runtime · VS Code & .NET CLI (dotnet new, build, run) · ప్రాజెక్ట్ ఫైల్ స్ట్రక్చర్ (.csproj, bin, obj) · Hello World అనాటమీ · Top-Level Statements · Console I/O · సిస్టమ్ ఇన్ఫో ప్రాజెక్ట్

స్వాగతం C# మాస్టర్‌క్లాస్‌కి! 👋 మైక్రోసాఫ్ట్ యొక్క ఫ్లాగ్‌షిప్ లాంగ్వేజ్ నేర్చుకుందాం!

ప్రపంచంలోని టాప్ ఫార్చ్యూన్ 500 ఎంటర్‌ప్రైజ్ కంపెనీలు, గ్లోబల్ బ్యాంకింగ్ సిస్టమ్స్, అజూర్ (Azure) క్లౌడ్ సర్వీసెస్, మరియు ప్రపంచ ప్రఖ్యాత యూనిటీ (Unity) గేమింగ్ ఇంజిన్ వెనుక ఉన్న ఏకైక అద్భుతమైన ప్రోగ్రామింగ్ లాంగ్వేజ్ C# (C-Sharp). C++ యొక్క అపారమైన వేగం, జావా యొక్క పోర్టబిలిటీ, మరియు పైథాన్ యొక్క సులభమైన సింటాక్స్‌ను ఒకే వేదికపైకి తీసుకువచ్చిన ఆధునిక భాష ఇది.

ఈ సమగ్ర 20-అధ్యాయాల మాస్టర్‌క్లాస్‌లో మనం కేవలం పాత సంప్రదాయ C# మాత్రమే కాకుండా, సరికొత్త C# 12 మరియు .NET 8 (LTS) ప్రమాణాలతో ప్రొఫెషనల్ సాఫ్ట్‌వేర్ ఇంజనీర్ తరహాలో కోడింగ్ నేర్చుకోబోతున్నాం. మొదటి అధ్యాయంలో C# పుట్టుక, .NET ఆర్కిటెక్చర్, కోడ్ తెరవెనుక ఎలా ఎగ్జిక్యూట్ అవుతుంది (CLR, IL, JIT), మరియు మన కంప్యూటర్‌లో కంప్లీట్ డెవలప్‌మెంట్ ఎన్విరాన్‌మెంట్ సెటప్ చేయడం ఎలాగో క్షుణ్ణంగా అన్వేషిద్దాం!

1 C# భాష పుట్టుక, చరిత్ర & Anders Hejlsberg విజన్

1990ల చివరలో మైక్రోసాఫ్ట్ సంస్థ ఒక సరికొత్త, నెక్స్ట్-జనరేషన్ ఆబ్జెక్ట్-ఓరియెంటెడ్ భాషను రూపొందించాలని సంకల్పించింది. ఈ ప్రాజెక్ట్‌కు ప్రారంభంలో "COOL" (C-like Object Oriented Language) అని కోడ్‌నేమ్ పెట్టారు. ఈ భాష రూపకల్పన బాధ్యతను సాఫ్ట్‌వేర్ రంగంలో దిగ్గజ ఇంజనీర్ అయిన ఆండర్స్ హెల్స్‌బర్గ్ (Anders Hejlsberg) కు అప్పగించారు.

ఆండర్స్ హెల్స్‌బర్గ్ సామాన్యమైన వ్యక్తి కాదు—ఆయన గతంలో పాపులర్ అయిన Turbo Pascal మరియు Delphi లను రూపొందించారు, తర్వాతి కాలంలో ప్రపంచాన్ని శాసిస్తున్న TypeScript ను కూడా మైక్రోసాఫ్ట్‌లో ఆయనే సృష్టించారు! ఆయన ఆలోచనల ఫలితంగా 2000 సంవత్సరంలో అధికారికంగా C# (C-Sharp) ప్రకటించబడింది మరియు 2002 లో .NET Framework 1.0 తో పాటు విడుదలైంది.

'C#' అనే పేరు వెనుక ఉన్న మ్యూజికల్ రహస్యం:

సంగీత శాస్త్రంలో 'C' నోట్ పక్కన '♯' (Sharp) గుర్తు పెడితే, అది సాధారణ C కంటే ఒక సెమిటోన్ ఎక్కువ శృతిలో (Higher Pitch) మరింత శ్రావ్యంగా పలికిస్తుందని అర్థం. అలాగే ప్రోగ్రామింగ్ ప్రపంచంలో C మరియు C++ భాషల కంటే ఒక స్థాయి ఉన్నతమైనది, మరింత శక్తివంతమైనది అని తెలియజేయడానికి ఈ భాషకు C# అని నామకరణం చేశారు. అంతేకాకుండా, C++ లోని నాలుగు '+' గుర్తులను ఒకచోట చేర్చితే '#' ఆకారం ఏర్పడుతుంది (C++ ++ = C#)!

C# వెర్షన్ల పరిణామ క్రమం (Evolution Timeline):

వెర్షన్ & సంవత్సరం .NET ప్లాట్‌ఫారమ్ పరిచయం చేసిన విప్లవాత్మక ఫీచర్లు
C# 1.0 (2002) .NET Framework 1.0 ప్రాథమిక ఆబ్జెక్ట్ ఓరియెంటెడ్ ఫీచర్లు, క్లాసెస్, ఇంటర్‌ఫేసెస్, డెలిగేట్స్, ఈవెంట్స్.
C# 2.0 (2005) .NET Framework 2.0 Generics (జెనెరిక్స్) — టైప్ సేఫ్ కలెక్షన్స్, బాక్సింగ్/అన్‌బాక్సింగ్ ఓవర్‌హెడ్ తొలగింపు, Nullable Types.
C# 3.0 (2007) .NET Framework 3.5 LINQ, లాంబ్డా ఎక్స్‌ప్రెషన్స్ (=>), Extension Methods, var టైప్ ఇన్ఫరెన్స్.
C# 5.0 (2012) .NET Framework 4.5 Async / Await — అసింక్రోనస్ ప్రోగ్రామింగ్‌లో ప్రపంచవ్యాప్త విప్లవం (తర్వాత జావాస్క్రిప్ట్, పైథాన్ కూడా దీనినే కాపీ చేశాయి).
C# 8.0 - 10.0 (2019-2021) .NET Core / .NET 6 Nullable Reference Types, Pattern Matching, Records, Top-Level Statements, Minimal APIs.
C# 12 (2023 - 2026+) .NET 8 LTS / .NET 9 Primary Constructors (క్లాసులలో), Collection Expressions, Ref readonly, అల్ట్రా-హై పెర్ఫార్మెన్స్ Native AOT.

2 .NET ఎకోసిస్టమ్ ఆర్కిటెక్చర్: .NET Framework vs .NET Core vs .NET 8+

చాలామంది బిగినర్లు "C# వేరు, .NET వేరు ఎలా?" అని అయోమయానికి గురవుతారు. స్పష్టంగా చెప్పాలంటే: C# అనేది ఒక ప్రోగ్రామింగ్ లాంగ్వేజ్ (మనం కోడ్ రాసే భాష), కాగా .NET అనేది ఒక రన్‌టైమ్ ప్లాట్‌ఫారమ్ మరియు భారీ లైబ్రరీల సముదాయం (ఆ కోడ్‌ను రన్ చేసే ఇంజిన్).

.NET పరిణామంలో 3 ప్రధాన యుగాలు:

  • యుగం 1 (.NET Framework 2002 - 2019): ఇది కేవలం విండోస్ (Windows OS) ఆపరేటింగ్ సిస్టమ్‌లో మాత్రమే పనిచేసేది. భారీ సైజు, విండోస్ డిపెండెన్సీ ఉండేది. ప్రస్తుతం ఇది కేవలం మెయింటెనెన్స్ మోడ్‌లో ఉంది.
  • యుగం 2 (.NET Core 2016 - 2020): మైక్రోసాఫ్ట్ ఓపెన్ సోర్స్ విధానాన్ని స్వీకరించి, మొత్తం ఆర్కిటెక్చర్‌ను స్క్రాచ్ నుండి తిరగరాసింది. ఇది విండోస్, లైనక్స్, మరియు మ్యాక్ (macOS) లపై తేలికపాటిగా పనిచేసే క్రాస్-ప్లాట్‌ఫారమ్ ఇంజిన్‌గా అవతరించింది.
  • యుగం 3 (.NET 5 / 6 / 7 / 8 / 9 Unified Era): 'Core' మరియు 'Framework' అనే గందరగోళాన్ని పూర్తిగా తొలగించి, వాటన్నింటినీ ఒకే ఒక్క Modern .NET కిందకు తీసుకువచ్చారు. వెబ్, క్లౌడ్, డెస్క్‌టాప్, మొబైల్ మరియు IoT అన్నీ ఒకే .NET SDK తో నిర్మించవచ్చు!
🏢 .NET 8 LTS అంటే ఏమిటి?
.NET 8 అనేది Long Term Support (LTS) విడుదల. మైక్రోసాఫ్ట్ దీనికి 3 సంవత్సరాల పాటు ఎంటర్‌ప్రైజ్-గ్రేడ్ సెక్యూరిటీ ప్యాచెస్ మరియు స్టెబిలిటీ సపోర్ట్ అందిస్తుంది. అందుకే ప్రపంచవ్యాప్తంగా సాఫ్ట్‌వేర్ కంపెనీలు తమ ప్రొడక్షన్ అప్లికేషన్లను .NET 8 పైనే నిర్మిస్తాయి.

3 కంప్యూటర్ మెమరీ & ఎగ్జిక్యూషన్ పైప్‌లైన్: C# కోడ్ ఎలా రన్ అవుతుంది?

C భాష నేరుగా మెషిన్ కోడ్‌గా కంపైల్ అవుతుంది, పైథాన్ ఇంటర్‌ప్రిటర్‌తో లైన్ బై లైన్ రన్ అవుతుంది. కానీ C# ఒక అద్భుతమైన టూ-స్టేజ్ హైబ్రిడ్ కంపైలేషన్ (Two-Stage Compilation Pipeline) విధానాన్ని ఉపయోగిస్తుంది. ఇది ప్లాట్‌ఫారమ్ ఇండిపెండెన్స్‌ను మరియు అత్యధిక ప్రాసెసింగ్ వేగాన్ని రెండింటినీ అందిస్తుంది.

స్టేజ్ 1: డెవలప్‌మెంట్ టైమ్ (Roslyn C# Compiler - csc)

మనం రాసిన C# సోర్స్ కోడ్ (.cs ఫైల్స్) ను మైక్రోసాఫ్ట్ యొక్క ఆధునిక ఓపెన్ సోర్స్ కంపైలర్ Roslyn కంపైల్ చేస్తుంది. అయితే ఇది నేరుగా CPU కి అర్థమయ్యే మెషిన్ కోడ్‌గా మార్చదు! బదులుగా ఇది CIL / IL (Common Intermediate Language) అనే మధ్యంతర బైనరీ బైట్‌కోడ్‌గా మార్చి, మెటాడేటాతో కలిపి .dll లేదా .exe అసెంబ్లీలుగా భద్రపరుస్తుంది.

స్టేజ్ 2: రన్‌టైమ్ (Common Language Runtime - CLR & RyuJIT Compiler)

యూజర్ ప్రోగ్రామ్‌ను రన్ చేసినప్పుడు, CLR (Common Language Runtime) రంగంలోకి దిగుతుంది. CLR లోపల ఉండే RyuJIT (Just-In-Time) Compiler ఆ IL కోడ్‌ను చదివి, ఆ సమయంలో మీ కంప్యూటర్‌లో ఉన్న CPU ఆర్కిటెక్చర్ (Intel x64, AMD64, లేదా Apple Silicon ARM64) కి సరిపోయే అల్ట్రా-ఫాస్ట్ నేటివ్ మెషిన్ కోడ్ (Native Machine Instructions) గా అక్కడికక్కడే మార్చి ఎగ్జిక్యూట్ చేస్తుంది!

విజువల్ ఎగ్జిక్యూషన్ పైప్‌లైన్ ఆర్కిటెక్చర్ డయాగ్రమ్:

[ C# Source Code: Program.cs ]
│
▼ (Compile Time: Roslyn csc Compiler)
[ Managed Assembly: MyApp.dll ]
├── CIL (Common Intermediate Language - Bytecode)
└── Manifest & Type Metadata (రకాల వివరాలు)
│
▼ (Run Time: Target Operating System)
┌────────────────────────────────────────────────────────┐
│ COMMON LANGUAGE RUNTIME (CLR) │
│ │
│ [ Class Loader & Verifier ] ➔ [ Type Safety Check ] │
│ │ │
│ ▼ │
│ [ JIT Compiler (RyuJIT) ] ➔ నేటివ్ CPU కోడ్ కన్వర్షన్ │
│ │ │
│ [ Garbage Collector (GC) ] & [ Exception Manager ] │
└────────────────────────────────────────────────────────┘
│
▼ (Direct Hardware Execution)
[ CPU & RAM: Native 010101 Instructions (x64 / ARM64) ]
🎯 IL (Intermediate Language) వల్ల అతిపెద్ద ప్రయోజనం ఏమిటి?
ఒకసారి కంపైల్ చేసిన MyApp.dll అసెంబ్లీని మార్చకుండానే విండోస్ లాప్‌టాప్, ఉబుంటు లైనక్స్ క్లౌడ్ సర్వర్, లేదా మ్యాక్‌బుక్ ఎం-సిరీస్ ప్రాసెసర్‌లలో నేరుగా రన్ చేయవచ్చు! ఆయా ఆపరేటింగ్ సిస్టమ్‌లలోని స్థానిక CLR ఆ IL కోడ్‌ను ఆయా CPUలకు సరిపోయేలా తర్జుమా చేసుకుంటుంది.

4 CLR (Common Language Runtime) యొక్క 4 సూపర్ పవర్స్

C# కోడ్‌ను మేనేజ్డ్ కోడ్ (Managed Code) అంటారు. ఎందుకంటే ఈ కోడ్ నేరుగా ఆపరేటింగ్ సిస్టమ్‌పై నిర్లక్ష్యంగా పరిగెత్తదు; ఇది CLR అనే ఒక నిపుణులైన వర్చువల్ గార్డియన్ పర్యవేక్షణలో పనిచేస్తుంది. CLR అందించే 4 అద్భుతమైన సేవలు:

సూపర్ పవర్ సాంకేతిక విభాగం ఇంజనీరింగ్ ప్రయోజనం
1. Automatic Memory Management Garbage Collector (GC) C లో లాగా మనం మాన్యువల్‌గా free() చేయాల్సిన అవసరం లేదు. వాడని ఆబ్జెక్టులను గుర్తించి RAM ని ఆటోమేటిక్‌గా రీక్లెయిమ్ చేస్తుంది (Zero Memory Leaks).
2. Strict Type Safety & Boundary Check IL Verifier అర్రే బౌండరీ దాటి పక్కనున్న మెమరీని కరప్ట్ చేయకుండా లేదా అక్రమ పాయింటర్ డీరెఫరెన్సింగ్ చేయకుండా బఫర్ ఓవర్‌ఫ్లో హ్యాకింగ్ దాడులను అడ్డుకుంటుంది.
3. Cross-Language Interoperability CTS (Common Type System) C# లో రాసిన క్లాస్‌ను F# లేదా VB.NET లో నేరుగా ఇన్‌హెరిట్ చేసుకోవచ్చు, ఎందుకంటే అన్ని భాషలూ ఒకే విధమైన IL డేటా టైప్స్‌ను షేర్ చేసుకుంటాయి.
4. Robust Exception Handling SEH Engine ప్రోగ్రామ్ అకస్మాత్తుగా బ్లూ స్క్రీన్ (BSOD) తో క్రాష్ అవ్వకుండా, లోపాలను పట్టుకుని కాల్ స్టాక్ (Call Stack) వివరాలతో క్లీన్‌గా హ్యాండిల్ చేస్తుంది.

5 డెవలప్‌మెంట్ ఎన్విరాన్‌మెంట్ సెటప్: .NET 8 SDK & VS Code

C# ప్రోగ్రామింగ్ ప్రారంభించడానికి మీ కంప్యూటర్‌లో ప్రధానంగా రెండు సాఫ్ట్‌వేర్లు ఉండాలి:

  1. .NET 8 SDK (Software Development Kit): ఇందులో C# కంపైలర్ (Roslyn), రన్‌టైమ్ ఇంజిన్ (CLR), మరియు కమాండ్ లైన్ టూల్స్ ఉంటాయి.
  2. కోడ్ ఎడిటర్ (IDE): Visual Studio Code (ఉచితం & లైట్‌వెయిట్) లేదా Visual Studio 2022 Community ఎడిషన్.

SDK vs Runtime తేడా:

  • .NET Runtime: కేవలం ఇప్పటికే కంపైల్ చేయబడిన C# యాప్‌లను రన్ చేయడానికి మాత్రమే సరిపోతుంది (ఎండ్యూజర్లకు ఇది చాలు).
  • .NET SDK: ఇందులో రన్‌టైమ్‌తో పాటు కొత్తగా కోడ్ రాయడానికి, కంపైల్ చేయడానికి మరియు బిల్డ్ చేయడానికి అవసరమైన అన్ని టూల్స్ ఉంటాయి (డెవలపర్లకు ఇది తప్పనిసరి).

స్టెప్ బై స్టెప్ ఇన్‌స్టాలేషన్ గైడ్:

# 1. అధికారిక వెబ్‌సైట్ నుండి SDK డౌన్‌లోడ్ చేయండి:
https://dotnet.microsoft.com/download/dotnet/8.0

# 2. ఇన్‌స్టాలేషన్ పూర్తయ్యాక, మీ టెర్మినల్ (PowerShell / Command Prompt / Terminal) ఓపెన్ చేసి తనిఖీ చేయండి:
dotnet --version
# ఔట్‌పుట్ ఇలా కనిపించాలి: 8.0.xxx

# 3. మొత్తం ఇన్‌స్టాల్ అయిన రన్‌టైమ్‌లు మరియు SDKల వివరాలు చూడటానికి:
dotnet --info
💻 VS Code రికమండెడ్ ఎక్స్‌టెన్షన్స్:
మీరు Visual Studio Code వాడుతుంటే, Extensions మార్కెట్‌ప్లేస్ నుండి మైక్రోసాఫ్ట్ వారి అధికారిక "C# Dev Kit" మరియు "C#" ఎక్స్‌టెన్షన్‌లను ఇన్‌స్టాల్ చేసుకోండి. ఇవి వరల్డ్-క్లాస్ ఆటో-కంప్లీషన్ (IntelliSense), సింటాక్స్ హైలైటింగ్, మరియు డీబగ్గింగ్ ఫీచర్లను అందిస్తాయి!

6 .NET CLI (Command-Line Interface) ప్రాథమిక కమాండ్స్

ఆధునిక సాఫ్ట్‌వేర్ ఇంజనీర్లు మరియు డెవలప్‌మెంట్ పైప్‌లైన్లు (CI/CD) గ్రాఫికల్ బటన్ల కంటే .NET CLI (Command-Line Interface) టూల్స్‌పైనే ఎక్కువగా ఆధారపడతారు. మీరు తెలుసుకోవాల్సిన అత్యంత కీలకమైన CLI కమాండ్స్ ఇక్కడ ఉన్నాయి:

కమాండ్ ఉద్దేశం (Purpose) నిజ జీవిత వినియోగం
dotnet new console -o MyApp కొత్త కన్సోల్ ప్రాజెక్ట్‌ను సృష్టించడం MyApp అనే ఫోల్డర్‌లో ప్రాజెక్ట్ ఫైల్స్ ఆటోమేటిక్‌గా తయారవుతాయి.
dotnet build ప్రాజెక్ట్‌ను కంపైల్ చేయడం సింటాక్స్ ఎర్రర్లను తనిఖీ చేసి bin/ ఫోల్డర్‌లో IL అసెంబ్లీని సృష్టిస్తుంది.
dotnet run బిల్డ్ & రన్ ఒకేసారి చేయడం కోడ్‌ను కంపైల్ చేసి తక్షణమే ఎగ్జిక్యూట్ చేస్తుంది (డెవలప్‌మెంట్ సమయంలో వాడతాం).
dotnet clean పాత బిల్డ్ ఫైల్స్‌ను తొలగించడం bin/ మరియు obj/ తాత్కాలిక ఫైల్స్‌ను క్లీన్ చేసి ఫ్రెష్ బిల్డ్‌కు సిద్ధం చేస్తుంది.
dotnet add package <Name> NuGet లైబ్రరీలను జోడించడం ఉదాహరణకు dotnet add package Newtonsoft.Json ద్వారా థర్డ్-పార్టీ లైబ్రరీలను కలపవచ్చు.
dotnet publish -c Release ప్రొడక్షన్ రిలీజ్ ప్యాకేజింగ్ సర్వర్‌లో డిప్లాయ్ చేయడానికి అవసరమైన హై-స్పీడ్ ఆప్టిమైజ్డ్ బైట్లను జనరేట్ చేస్తుంది.

7 ప్రాజెక్ట్ ఫైల్ స్ట్రక్చర్ అనాటమీ (.csproj, bin, obj, Program.cs)

మనం dotnet new console -o HelloCSharp అని టైప్ చేయగానే ఆ ఫోల్డర్‌లో క్రింది ఫైల్స్ సృష్టించబడతాయి:

HelloCSharp/
├── HelloCSharp.csproj <--- ప్రాజెక్ట్ కాన్ఫిగరేషన్ ఫైల్ (XML రూపంలో)
├── Program.cs <--- మనం C# కోడ్ రాసే ప్రధాన సోర్స్ ఫైల్
├── obj/ <--- కంపైలర్ వాడే తాత్కాలిక ఇంటర్మీడియట్ ఫైల్స్
└── bin/ <--- చివరగా తయారైన బైనరీ అసెంబ్లీలు (DLL / EXE)

1. HelloCSharp.csproj ఫైల్ అంతర్గత స్వరూపం:

ఇది MSBuild ఇంజిన్‌కు మన ప్రాజెక్ట్ గురించి తెలిపే కాన్ఫిగరేషన్ ఫైల్:

XML — .csproj Project Configuration File
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <!-- కన్సోల్ అప్లికేషన్ అని నిర్ధారించడం -->
    <OutputType>Exe</OutputType>
    
    <!-- .NET 8 LTS టార్గెట్ ఫ్రేమ్‌వర్క్ -->
    <TargetFramework>net8.0</TargetFramework>
    
    <!-- System నేమ్‌స్పేస్‌ను ఆటోమేటిక్‌గా ఇంక్లూడ్ చేసే ఆధునిక C# ఫీచర్ -->
    <ImplicitUsings>enable</ImplicitUsings>
    
    <!-- నల్ పాయింటర్ ఎర్రర్లను నివారించే స్ట్రిక్ట్ టైప్ చెకింగ్ -->
    <Nullable>enable</Nullable>
  </PropertyGroup>

</Project>
🚨 Git రిపోజిటరీ నిబంధన (Golden Git Rule):
bin/ మరియు obj/ ఫోల్డర్‌లను ఎప్పుడూ GitHub లేదా Git లోకి కమిట్ చేయకూడదు! ఎందుకంటే అవి మీ స్థానిక కంప్యూటర్ కంపైలేషన్‌లో ఆటోమేటిక్‌గా ఉత్పన్నమయ్యే తాత్కాలిక ఫైల్స్. ఎల్లప్పుడూ ప్రామాణిక .gitignore ఫైల్ వాడి వాటిని విస్మరించాలి.

8 మొదటి C# ప్రోగ్రామ్: క్లాసిక్ vs మోడ్రన్ Top-Level Statements

C# భాష ప్రారంభం నుండి C# 8 వరకు ప్రతి చిన్న కోడ్ ముక్క రాయాలన్నా ఒక క్లాస్ మరియు ఒక స్టాటిక్ Main() మెథడ్ తప్పనిసరిగా ఉండేది. కానీ C# 9 నుండి మైక్రోసాఫ్ట్ టాప్-లెవల్ స్టేట్‌మెంట్స్ (Top-Level Statements) అనే అద్భుతమైన ఫీచర్‌ను పరిచయం చేసింది.

క్లాసిక్ విధానం (Traditional C# with Boilerplate):

C# (Classic C# 1 to 8 Boilerplate)
using System;

namespace MyFirstApp
{
    internal class Program
    {
        // ప్రోగ్రామ్ ఎగ్జిక్యూషన్ ఇక్కడే ప్రారంభమవుతుంది
        static void Main(string[] args)
        {
            Console.WriteLine("నమస్కారం ప్రపంచం! ఇది క్లాసిక్ C# శైలి.");
        }
    }
}

క్లాసిక్ కోడ్ భాగాల సమగ్ర విశ్లేషణ:

  • using System; — బేసిక్ డేటా టైప్స్ మరియు Console క్లాస్ ఉన్న ప్రధాన నేమ్‌స్పేస్‌ను దిగుమతి చేసుకుంటుంది.
  • namespace MyFirstApp — సంబంధిత క్లాసులను ఒక గ్రూప్‌గా నిర్వహించే ఒక లాజికల్ కంటైనర్ (పేర్ల వైరుధ్యం రాకుండా చూస్తుంది).
  • class Program — C# లో ప్రతి ఫంక్షన్ మరియు వేరియబుల్ ఖచ్చితంగా ఏదో ఒక క్లాస్ లోపలే ఉండాలి (Pure Object-Oriented).
  • static void Main(string[] args) — OS ప్రోగ్రామ్‌ను రన్ చేసే అధికారిక ప్రారంభ ద్వారం (Entry Point). static అంటే ఆబ్జెక్ట్ సృష్టించకుండానే రన్ అవ్వగలదు; void అంటే ఏ విలువను రిటర్న్ చేయదు; string[] args కమాండ్ లైన్ ఆర్గ్యుమెంట్లను తీసుకుంటుంది.

మోడ్రన్ శైలి (Modern C# 12 Top-Level Statements):

ఆధునిక C# లో ఈ అనవసరమైన బోయిలర్‌ప్లేట్ మొత్తం రాయాల్సిన పనిలేదు! Program.cs ఫైల్‌లో నేరుగా ఒకే లైన్ రాయవచ్చు:

C# (Modern Top-Level Statement)
// .NET 8 లో సింగిల్ లైన్ టాప్-లెవల్ కోడ్
Console.WriteLine("నమస్కారం! ఇది సరికొత్త మోడ్రన్ C# 12.");
❓ తెరవెనుక ఏం జరుగుతుంది?
మీరు పై విధంగా రాసినప్పటికీ, Roslyn కంపైలర్ బ్యాక్‌గ్రౌండ్‌లో స్వయంగా ఒక సింథటిక్ Program క్లాస్‌ను మరియు <Main>$ ఎంట్రీ పాయింట్‌ను సృష్టించి మీ కోడ్‌ను అందులో పెడుతుంది! కాబట్టి పెర్ఫార్మెన్స్‌లో కానీ, ఆర్కిటెక్చర్‌లో కానీ ఎలాంటి తేడా ఉండదు. పైథాన్ లేదా జావాస్క్రిప్ట్ లాంటి స్వచ్ఛమైన కోడింగ్ అనుభూతిని C# అందిస్తుంది!

9 Console క్లాస్ & బేసిక్ I/O మెకానిక్స్

కన్సోల్ టెర్మినల్‌తో మాట్లాడటానికి C# లో System.Console అనే స్టాటిక్ క్లాస్‌ను ఉపయోగిస్తాం. ఇందులో ముఖ్యమైన మెథడ్స్ మరియు ఫీచర్లు:

  • Console.WriteLine("టెక్స్ట్") — టెక్స్ట్‌ను ప్రింట్ చేసి కర్సర్‌ను తదుపరి లైన్‌కు (Newline) తీసుకెళ్తుంది.
  • Console.Write("టెక్స్ట్") — టెక్స్ట్‌ను ప్రింట్ చేస్తుంది కానీ అదే లైన్‌లో కర్సర్‌ను ఉంచుతుంది.
  • Console.ReadLine() — యూజర్ కీబోర్డ్ ద్వారా ఎంటర్ చేసిన పూర్తి వాక్యాన్ని string రూపంలో రీడ్ చేస్తుంది.

ప్రాక్టికల్ డెమో: స్ట్రింగ్ ఇంటర్‌పోలేషన్ ($) మరియు కలర్ టెర్మినల్ అవుట్‌పుట్

C# — Interactive Console I/O & Styling
using System;

// టెర్మినల్ టైటిల్ మరియు రంగులు సెట్ చేయడం
Console.Title = "C# మాస్టర్‌క్లాస్ డెమో";
Console.ForegroundColor = ConsoleColor.Cyan;
Console.WriteLine("========================================");
Console.WriteLine("   🚀 C# & .NET 8 ఇంటరాక్టివ్ వెల్‌కమ్    ");
Console.WriteLine("========================================");
Console.ResetColor();

// యూజర్ ఇన్‌పుట్ స్వీకరించడం
Console.Write("మీ శుభనామం ఏమిటి? ");
string? userName = Console.ReadLine();

Console.Write("మీరు ఏ నగరంలో నివసిస్తున్నారు? ");
string? city = Console.ReadLine();

// మోడ్రన్ C# స్ట్రింగ్ ఇంటర్‌పోలేషన్ ($) వాడకం
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine($"\nహలో {userName}! {city} నగరానికి మా హృదయపూర్వక స్వాగతం!");
Console.WriteLine($"ప్రస్తుత సర్వర్ సమయం: {DateTime.Now:yyyy-MM-dd HH:mm:ss}");
Console.ResetColor();

Console.WriteLine("\nముగించడానికి ఏదైనా కీ ప్రెస్ చేయండి...");
Console.ReadKey();

10 C# కోడింగ్ కన్వెన్షన్స్ & Microsoft బెస్ట్ ప్రాక్టీసెస్

ప్రపంచవ్యాప్తంగా ప్రొఫెషనల్ C# కోడ్ బేస్‌లు మైక్రోసాఫ్ట్ నిర్దేశించిన ప్రామాణిక నామకరణ నిబంధనలను (Naming Conventions) ఖచ్చితంగా పాటిస్తాయి:

కేసింగ్ శైలి దేనికి ఉపయోగిస్తారు? ఉదాహరణలు
PascalCase క్లాసులు, మెథడ్స్, ప్రాపర్టీలు, ఈవెంట్స్, నేమ్‌స్పేస్‌లు StudentManager, CalculateGpa(), TotalScore
camelCase లోకల్ వేరియబుల్స్, మెథడ్ పారామీటర్లు studentCount, userName, maxLimit
_camelCase (with underscore) ప్రైవేట్ ఫీల్డ్స్ (Private member variables) _databaseConnection, _retryCount
I + PascalCase ఇంటర్‌ఫేసెస్ (Interfaces) IDisposable, IEnumerable, IRepository

XML డాక్యుమెంటేషన్ కామెంట్స్ (XML Doc Comments):

C# లో సాధారణ // కామెంట్లతో పాటు మూడు స్లాష్‌లతో కూడిన /// కామెంట్లను వాడతారు. ఇది రాస్తే విజువల్ స్టూడియో మరియు ఇతర ఎడిటర్లు ఫంక్షన్లపై మౌస్ పెట్టినప్పుడు అందమైన హెల్ప్ బాక్సులను (IntelliSense Tooltips) చూపిస్తాయి!

C# — XML Documentation Comments
/// <summary>
/// ఇచ్చిన రెండు సంఖ్యల మొత్తాన్ని లెక్కిస్తుంది.
/// </summary>
/// <param name="a">మొదటి పూర్ణాంకం</param>
/// <param name="b">రెండవ పూర్ణాంకం</param>
/// <returns>రెండు సంఖ్యల కూడిక ఫలితం</returns>
int AddNumbers(int a, int b)
{
    return a + b;
}

11 ప్రాక్టికల్ ప్రాజెక్ట్: ఇంటరాక్టివ్ .NET సిస్టమ్ ఇన్ఫర్మేషన్ CLI టూల్

మనం నేర్చుకున్న C# & .NET పరిజ్ఞానంతో మన కంప్యూటర్ హార్డ్‌వేర్, ఆపరేటింగ్ సిస్టమ్, మెమరీ మరియు .NET రన్‌టైమ్ వివరాలను వెలికితీసే ఒక ప్రొడక్షన్-గ్రేడ్ సిస్టమ్ డయాగ్నోస్టిక్స్ CLI టూల్ (System Diagnostics Tool) ను నిర్మిద్దాం:

C# — System Diagnostics CLI Project (DotNetSysInfo)
using System;

Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("================================================================");
Console.WriteLine("        💻 .NET 8 SYSTEM DIAGNOSTICS & RUNTIME AUDITOR           ");
Console.WriteLine("================================================================");
Console.ResetColor();

// Environment క్లాస్ ద్వారా సిస్టమ్ సమాచారాన్ని సేకరించడం
string osVersion = Environment.OSVersion.ToString();
string machineName = Environment.MachineName;
string userName = Environment.UserName;
int coreCount = Environment.ProcessorCount;
Version dotnetVersion = Environment.Version;
bool is64BitOS = Environment.Is64BitOperatingSystem;
bool is64BitProcess = Environment.Is64BitProcess;
long workingSetMemory = Environment.WorkingSet / (1024 * 1024); // MB లోకి మార్చడం
TimeSpan uptime = TimeSpan.FromMilliseconds(Environment.TickCount64);

Console.WriteLine($"
[1] హోస్ట్ మెషిన్ సమాచారం:");
Console.WriteLine($"    • కంప్యూటర్ పేరు      : {machineName}");
Console.WriteLine($"    • లాగిన్ యూజర్        : {userName}");
Console.WriteLine($"    • ఆపరేటింగ్ సిస్టమ్     : {osVersion} ({(is64BitOS ? "64-bit OS" : "32-bit OS")})");

Console.ForegroundColor = ConsoleColor.Yellow;
Console.WriteLine($"
[2] .NET రన్‌టైమ్ వివరాలు:");
Console.WriteLine($"    • .NET CLR వెర్షన్    : {dotnetVersion}");
Console.WriteLine($"    • ప్రాసెస్ ఆర్కిటెక్చర్ : {(is64BitProcess ? "x64 Managed Process" : "x86 Process")}");
Console.WriteLine($"    • GC అలోకేటెడ్ మెమరీ  : {workingSetMemory} MB");
Console.ResetColor();

Console.ForegroundColor = ConsoleColor.Cyan;
Console.WriteLine($"
[3] ప్రాసెసర్ & పనితీరు లెక్కలు:");
Console.WriteLine($"    • లభ్యమైన CPU కోర్లు   : {coreCount} Logical Cores");
Console.WriteLine($"    • సిస్టమ్ అప్‌టైమ్     : {uptime.Days} రోజుల {uptime.Hours} గంటల {uptime.Minutes} నిమిషాలు");
Console.WriteLine($"    • ప్రస్తుత ఫోల్డర్     : {Environment.CurrentDirectory}");
Console.ResetColor();

Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("
================================================================");
Console.WriteLine("✅ సిస్టమ్ ఆడిట్ విజయవంతంగా పూర్తయింది. .NET 8 రన్‌టైమ్ పర్ఫెక్ట్‌గా ఉంది!");
Console.WriteLine("================================================================");
Console.ResetColor();

🚀 లైవ్ C# కంపైలర్‌లో రన్ చేసి చూడండి!

ఎలాంటి లోకల్ సాఫ్ట్‌వేర్ ఇన్‌స్టాల్ చేయకుండానే మీ బ్రౌజర్‌లోనే ఈ కోడ్‌ను నేరుగా ఎగ్జిక్యూట్ చేయండి!

Online C# Compiler ఓపెన్ చేయండి ➔

12 కామన్ బిగినర్ ఎర్రర్స్ & ట్రబుల్‌షూటింగ్ గైడ్

C# ప్రారంభంలో విద్యార్థులు తరచుగా ఎదుర్కొనే 4 ప్రధాన సమస్యలు మరియు వాటిని పరిష్కరించే మార్గాలు:

ఎర్రర్ సందేశం / సమస్య కారణం (Why it happens) పరిష్కారం (Quick Solution)
'dotnet' is not recognized as an internal or external command .NET SDK ఇన్‌స్టాల్ కాలేదు లేదా Windows PATH ఎన్విరాన్‌మెంట్ వేరియబుల్‌లో చేర్చబడలేదు. SDK ని రీ-ఇన్‌స్టాల్ చేసి టెర్మినల్‌ను రీస్టార్ట్ చేయండి. PATH లో C:Program Filesdotnet ఉందో లేదో సరిచూసుకోండి.
CS0103: The name 'Console' does not exist in the current context System నేమ్‌స్పేస్ ఇంక్లూడ్ కాలేదు మరియు ప్రాజెక్ట్‌లో ImplicitUsings డిసేబుల్ అయి ఉంది. ఫైల్ ప్రారంభంలో using System; అని రాయండి లేదా .csproj లో <ImplicitUsings>enable</ImplicitUsings> ఉంచండి.
CS8803: Top-level statements must precede namespace and type declarations టాప్-లెవల్ కోడ్ రాస్తూనే, దాని పైన క్లాసులు లేదా నేమ్‌స్పేస్‌లను డిక్లేర్ చేశారు. టాప్-లెవల్ స్టేట్‌మెంట్స్ ఎల్లప్పుడూ ఫైల్ ప్రారంభంలోనే ఉండాలి. క్లాసులు మరియు ఫంక్షన్లను వాటి క్రింద మాత్రమే రాయాలి.
CS5001: Program does not contain a static 'Main' method suitable for an entry point ప్రాజెక్ట్‌లో ఏ ఫైల్‌లోనూ Main() మెథడ్ కానీ లేదా టాప్-లెవల్ స్టేట్‌మెంట్ కానీ లేకపోవడం. కనీసం ఒక ఫైల్‌లో టాప్-లెవల్ స్టేట్‌మెంట్ లేదా static void Main() ఉండేలా చూసుకోండి.

13 సారాంశం, ఇంటర్వ్యూ ప్రశ్నలు & సెల్ఫ్-అసెస్మెంట్ క్విజ్

కీలక సారాంశం (Key Takeaways):

  • C# & .NET: C# అనేది ఆధునిక, టైప్-సేఫ్ ఆబ్జెక్ట్-ఓరియెంటెడ్ భాష; .NET అనేది దానిని రన్ చేసే పవర్‌ఫుల్ ప్లాట్‌ఫారమ్.
  • Two-Stage Compilation: Roslyn కంపైలర్ C# కోడ్‌ను IL (Intermediate Language) గా మారుస్తుంది; రన్‌టైమ్‌లో RyuJIT దానిని నేటివ్ మెషిన్ కోడ్‌గా ఎగ్జిక్యూట్ చేస్తుంది.
  • CLR (Common Language Runtime): ఆటోమేటిక్ గార్బేజ్ కలెక్షన్, మెమరీ సేఫ్టీ, ఎక్సెప్షన్ హ్యాండ్లింగ్ అందించే ఇంజిన్.
  • CLI Commands: dotnet new, dotnet build, dotnet run ప్రాజెక్ట్ లైఫ్‌సైకిల్‌ను శాసిస్తాయి.
  • Top-Level Statements: మోడ్రన్ C# లో బోయిలర్‌ప్లేట్ లేకుండా డైరెక్ట్‌గా క్లీన్ కోడ్ రాయవచ్చు.

టాప్ 5 C# & .NET ఇంటర్వ్యూ ప్రశ్నలు:

  1. Q1: మేనేజ్డ్ కోడ్ (Managed Code) మరియు అన్‌మేనేజ్డ్ కోడ్ (Unmanaged Code) మధ్య తేడా ఏమిటి?
    జవాబు: CLR వర్చువల్ మెషిన్ పర్యవేక్షణలో నడుస్తూ గార్బేజ్ కలెక్టర్ ద్వారా మెమరీ మేనేజ్ చేయబడే కోడ్‌ను మేనేజ్డ్ కోడ్ (C#, F#, VB.NET) అంటారు. నేరుగా ఆపరేటింగ్ సిస్టమ్ హార్డ్‌వేర్‌పై నడుస్తూ డెవలపరే మెమరీని ఫ్రీ చేయాల్సిన కోడ్‌ను అన్‌మేనేజ్డ్ కోడ్ (C, C++) అంటారు.
  2. Q2: .NET లో IL (Intermediate Language) మరియు JIT కంపైలర్ పాత్ర ఏమిటి?
    జవాబు: C# కంపైలర్ కోడ్‌ను ప్రాసెసర్-స్వతంత్ర IL బైట్‌కోడ్‌గా మారుస్తుంది. ప్రోగ్రామ్ రన్ అయ్యే సమయంలో JIT (Just-In-Time) కంపైలర్ ఆ IL కోడ్‌ను ఆ కంప్యూటర్ CPU కి తగిన నేటివ్ మెషిన్ కోడ్‌గా క్షణాల్లో కంపైల్ చేస్తుంది.
  3. Q3: .NET Framework మరియు ఆధునిక .NET 8 మధ్య ప్రధాన వ్యత్యాసాలు ఏమిటి?
    జవాబు: పాత .NET Framework కేవలం Windows లో మాత్రమే పనిచేసేది, ఓపెన్ సోర్స్ కాదు. మోడ్రన్ .NET 8 పూర్తిగా ఓపెన్ సోర్స్, క్లౌడ్-ఆప్టిమైజ్డ్, విండోస్/లైనక్స్/మ్యాక్‌లలో పనిచేసే క్రాస్-ప్లాట్‌ఫారమ్ హై-స్పీడ్ ఇంజిన్.
  4. Q4: Top-Level Statements వాడటం వల్ల ఏవైనా పెర్ఫార్మెన్స్ సమస్యలు వస్తాయా?
    జవాబు: అస్సలు రావు! కంపైలేషన్ సమయంలో Roslyn కంపైలర్ దానిని సాధారణ Program.Main లాగే మారుస్తుంది కాబట్టి ఎగ్జిక్యూషన్ స్పీడ్‌లో ఎటువంటి తేడా ఉండదు.
  5. Q5: Roslyn కంపైలర్ ప్రత్యేకత ఏమిటి?
    జవాబు: Roslyn అనేది C# లోనే తిరిగి వ్రాయబడిన మైక్రోసాఫ్ట్ ఓపెన్ సోర్స్ కంపైలర్ ప్లాట్‌ఫారమ్. ఇది కంపైలేషన్ చేయడమే కాకుండా, కోడ్ అనాలిసిస్, రిఫ్యాక్టరింగ్ మరియు IDE IntelliSense సేవలను ఓపెన్ API ల రూపంలో అందిస్తుంది.

ఇంటరాక్టివ్ సెల్ఫ్-అసెస్మెంట్ క్విజ్ (Self-Assessment Quiz):

❓ ప్రశ్న 1: C# కోడ్ కంపైల్ అయినప్పుడు నేరుగా మెషిన్ కోడ్ కాకుండా ఏ ఫార్మాట్‌లోకి మారుతుంది?
సమాధానం: IL (Common Intermediate Language) బైట్‌కోడ్ రూపంలోకి మారుతుంది. ఇది .dll లేదా .exe అసెంబ్లీలో మెటాడేటాతో సహా భద్రపరచబడుతుంది.
❓ ప్రశ్న 2: .NET లో మెమరీని ఆటోమేటిక్‌గా క్లీన్ చేసే అంతర్గత ఇంజిన్ ఏది?
సమాధానం: Garbage Collector (GC). ఇది CLR లో భాగంగా ఉంటూ ఉపయోగంలో లేని ఆబ్జెక్టులను గుర్తించి హీప్ (Heap) మెమరీని విడుదల చేస్తుంది.
❓ ప్రశ్న 3: Console.WriteLine() మరియు Console.Write() మధ్య ప్రధాన తేడా ఏమిటి?
సమాధానం: Console.WriteLine() టెక్స్ట్‌ను ప్రింట్ చేసిన తర్వాత చివరన న్యూలైన్ (\n) ను జోడిస్తుంది. Console.Write() కర్సర్‌ను అదే లైన్‌లోనే ఉంచుతుంది.
❓ ప్రశ్న 4: ఒక కొత్త కన్సోల్ అప్లికేషన్‌ను సృష్టించడానికి ఏ .NET CLI కమాండ్‌ను ఉపయోగిస్తారు?
సమాధానం: dotnet new console -o ProjectName
❓ ప్రశ్న 5: C# భాష యొక్క ప్రధాన రూపకర్త (Architect) ఎవరు?
సమాధానం: ఆండర్స్ హెల్స్‌బర్గ్ (Anders Hejlsberg) — మైక్రోసాఫ్ట్ టెక్నికల్ ఫెలో, అలాగే TypeScript మరియు Turbo Pascal ల రూపకర్త.
← C# Course Home (ఇండెక్స్) Next: 02. వేరియబుల్స్ & CTS డేటా టైప్స్ →
OC
Written by Our Compiler Technical Editorial Team
Reviewed for accuracy & tested on .NET 8 SDK / C# 12 runtime · 2026 Academic Edition