C# एक आधुनिक, बहु-परिकल्पना प्रोग्रामिंग भाषा है जिसे Microsoft ने अपने .NET ढांचे के भीतर विकसित किया है। यह मुख्य रूप से Windows और वेब अनुप्रयोगों के लिए सॉफ़्टवेयर विकास के लिए लक्षित है, C# मजबूत टाइपिंग, अनिवार्य और वस्तु-उन्मुख प्रोग्रामिंग (OOP) सुविधाओं को कार्यात्मक प्रोग्रामिंग क्षमताओं के साथ जोड़ता है। इसे इसकी पठनीयता, बहुपरकारीता, और मजबूत विकास समर्थन के लिए व्यापक रूप से मान्यता प्राप्त है, जिससे यह उद्यम डेवलपर्स और गेम प्रोग्रामर्स के बीच एक पसंदीदा बन गया है, विशेष रूप से Unity गेम इंजन के साथ मिलकर।
C# का निर्माण 2000 के दशक की शुरुआत में Anders Hejlsberg और उनकी टीम द्वारा Microsoft में .NET पहल के हिस्से के रूप में किया गया था। इस भाषा को उत्पादकता में सुधार करने के लिए डिज़ाइन किया गया था, जो एक सरल, आधुनिक, वस्तु-उन्मुख प्रोग्रामिंग भाषा प्रदान करता है जो Microsoft पारिस्थितिकी तंत्र के साथ अच्छी तरह से एकीकृत होता है। इसकी संरचना में पूर्ववर्ती भाषाओं, जैसे Java और C++, का प्रभाव स्पष्ट है।
C# के प्रारंभिक संस्करण .NET ढांचे के साथ निकटता से जुड़े हुए थे, जिसका उद्देश्य डेवलपर्स को अनुप्रयोग बनाने के लिए पुस्तकालयों और उपकरणों का एक व्यापक सेट प्रदान करना था। C# संस्करण 1.0 को 2002 में .NET फ्रेमवर्क के साथ लॉन्च किया गया था। वर्षों के दौरान, अतिरिक्त सुविधाएँ और सुधार लागू किए गए हैं, C# विभिन्न पुनरावृत्तियों के माध्यम से महत्वपूर्ण रूप से विकसित हुआ है।
2016 में .NET Core का विमोचन एक महत्वपूर्ण मील का पत्थर था, जिसने C# को क्रॉस-प्लेटफ़ॉर्म बना दिया और इसकी बहुपरकारीता को बढ़ा दिया। इसके बाद के संस्करणों, जैसे C# 7.0 और उसके बाद, ने ट्यूपल, पैटर्न मिलान, और असिंक्रोनस स्ट्रीम जैसी सुविधाएँ पेश कीं, जिससे भाषा को और भी बेहतर बनाया गया। आज, C# आधुनिक सॉफ़्टवेयर विकास के अग्रिम पंक्ति में है, जो एक जीवंत समुदाय और .NET पारिस्थितिकी तंत्र में निरंतर अपडेट द्वारा समर्थित है।
C# एक स्थिर रूप से टाइप की गई भाषा है, जिसका अर्थ है कि चर प्रकार संकलन के समय ज्ञात होते हैं। यह विशेषता प्रदर्शन को बढ़ाती है और कुछ प्रकार की रनटाइम त्रुटियों को रोकती है।
int number = 10;
string text = "Hello, C#";
C# OOP अवधारणाओं का पूर्ण समर्थन करता है, जिससे डेवलपर्स को कक्षाएँ और वस्तुएँ बनाने, डेटा को संलग्न करने, और विरासत और बहुरूपता का उपयोग करने की अनुमति मिलती है।
class Animal {
public void Speak() {
Console.WriteLine("Animal speaks");
}
}
class Dog : Animal {
public void Speak() {
Console.WriteLine("Dog barks");
}
}
C# गुणों का उपयोग करने की अनुमति देता है, जो कक्षा डेटा के बेहतर संलग्नन को सक्षम बनाता है जबकि मान प्राप्त करने और सेट करने के लिए आसान पहुँच बनाए रखता है।
class Person {
private string name;
public string Name {
get { return name; }
set { name = value; }
}
}
C# डेलीगेट्स का समर्थन करता है, जो प्रकार-सुरक्षित फ़ंक्शन पॉइंटर्स होते हैं, और इवेंट्स के लिए इवेंट-चालित प्रोग्रामिंग को लागू करने के लिए।
public delegate void Notify(); // डेलीगेट
public class Process {
public event Notify ProcessCompleted; // इवेंट
public void StartProcess() {
// प्रक्रिया लॉजिक
ProcessCompleted?.Invoke(); // इवेंट उठाएँ
}
}
C# LINQ प्रदान करता है, जो एक शक्तिशाली विशेषता है जो संग्रहों को संक्षिप्त और पठनीय तरीके से क्वेरी करने की अनुमति देती है।
var numbers = new List<int> { 1, 2, 3, 4, 5 };
var evenNumbers = from n in numbers where n % 2 == 0 select n;
C# असिंक्रोनस प्रोग्रामिंग को सरल बनाता है, async और await कीवर्ड का उपयोग करके, I/O-बंधन कार्यों के लिए प्रदर्शन को बढ़ाता है।
public async Task<string> GetDataAsync() {
using (var client = new HttpClient()) {
return await client.GetStringAsync("http://example.com");
}
}
एक्सटेंशन मेथड्स डेवलपर्स को मौजूदा प्रकारों में नए मेथड "जोड़ने" की अनुमति देते हैं बिना उनके स्रोत कोड को संशोधित किए।
public static class MyExtensions {
public static int WordCount(this string str) {
return str.Split(' ').Length;
}
}
C# नल योग्य मान प्रकारों का समर्थन करता है, जो डेटा का प्रतिनिधित्व करने की अनुमति देता है जो अनुपस्थित हो सकता है।
int? nullableInt = null;
C# ट्यूपल्स के लिए अंतर्निहित समर्थन प्रदान करता है, जो कई मानों को संलग्न करने की अनुमति देता है।
var person = (Name: "John", Age: 30);
Console.WriteLine($"{person.Name} is {person.Age} years old.");
.NET SDK C# में अनुप्रयोग विकसित करने के लिए मुख्य उपकरण सेट है। इसमें CLR (कॉमन लैंग्वेज रनटाइम), पुस्तकालय, और C# को चलाने और संकलित करने के लिए आवश्यक संकलक शामिल हैं।
Visual Studio C# विकास के लिए प्रमुख IDE है, जो उन्नत डिबगिंग, IntelliSense, और अनुप्रयोगों को बनाने और तैनात करने के लिए एक एकीकृत वातावरण प्रदान करता है। अन्य लोकप्रिय विकल्पों में JetBrains Rider और Visual Studio Code शामिल हैं, जिन्हें सही एक्सटेंशन के साथ C# विकास के लिए अनुकूलित किया जा सकता है।
.NET CLI का उपयोग करके C# प्रोजेक्ट बनाने के लिए, कोई dotnet new
जैसे कमांड का उपयोग कर सकता है ताकि एक नया प्रोजेक्ट बनाया जा सके, dotnet build
का उपयोग करके कोड को संकलित किया जा सके, और dotnet run
का उपयोग करके अनुप्रयोग को निष्पादित किया जा सके। एक कंसोल अनुप्रयोग बनाने की प्रक्रिया इस प्रकार होगी:
dotnet new console -n MyConsoleApp
cd MyConsoleApp
dotnet run
C# का उपयोग विभिन्न प्रकार के अनुप्रयोगों में किया जाता है, जिसमें शामिल हैं:
C# अन्य भाषाओं की तुलना में एक शक्तिशाली भाषा है। यहाँ कुछ उल्लेखनीय समानताएँ और भिन्नताएँ हैं:
C# और अन्य भाषाओं के बीच कोड का अनुवाद अक्सर स्रोत से स्रोत उपकरणों, जिन्हें सामान्यतः ट्रांसपिलर्स कहा जाता है, द्वारा सुगम किया जा सकता है। उदाहरण के लिए, SharpKit जैसे उपकरण C# को वेब अनुप्रयोगों के लिए JavaScript में परिवर्तित कर सकते हैं, जबकि Bridge.NET C# को JavaScript या HTML5 अनुप्रयोगों में संकलित करने की अनुमति देता है।
विशेष परिदृश्यों में, C# को अन्य भाषाओं जैसे Java या Python में परिवर्तित करने के लिए पुस्तकालय और उपकरण मौजूद हैं, जो अक्सर प्रभावी रूपांतरण प्रक्रिया सुनिश्चित करने के लिए विशिष्ट भाषा सुविधाओं और परिकल्पनाओं पर ध्यान केंद्रित करते हैं।
उदाहरण के लिए, C# से Python में अनुवाद करते समय, डेवलपर को प्रकार प्रणाली और मेमोरी प्रबंधन प्रथाओं को अनुकूलित करने का ध्यान रखना चाहिए, क्योंकि Python की गतिशील टाइपिंग और गारबेज कलेक्शन सिद्धांत C# की स्थिर टाइपिंग और प्रबंधित रनटाइम से भिन्न होते हैं।
विभिन्न कोड अनुवादों को सुगम बनाने वाले मौजूदा उपकरणों में CodePorting शामिल है जो .NET अनुप्रयोगों को Java में परिवर्तित करता है और Jitterbit जो व्यापक एकीकरण समाधानों के लिए है। प्रत्येक उपकरण की अपनी ताकत होती है, और चयन परियोजना की विशिष्टताओं और इच्छित परिणामों पर निर्भर करता है।