ویژگیهای جدید C# 3.0
- Language-Integrated Query (LINQ) (پرسوجوی یکپارچه با زبان)
- Lambda Expressions (عبارات لامبدا)
- Auto-Implemented Properties (خصوصیات خودکار پیادهسازیشده)
- Anonymous Types (نوعهای بینام)
- Extension Methods (متدهای گسترشی)
- Object and Collection Initializers (مقداردهی اولیه اشیا و مجموعهها)
- Implicitly Typed Local Variables (متغیرهای محلی با نوع ضمنی)
- Expression Trees (درختهای عبارت)
- Partial Methods (متدهای جزئی)
- جمعبندی
نسخه C# 3.0 که در نوامبر 2007 و همراه با Visual Studio 2008 منتشر شد، نقطه عطفی در تکامل این زبان بهشمار میآید. این نسخه، با اضافه کردن قابلیتهایی که پایه و اساس LINQ را تشکیل میدادند، سیشارپ را به زبانی قدرتمند و ترکیبی از برنامهنویسی شیءگرا و تابعی تبدیل کرد. این ویژگیها باعث سادهتر شدن کار با دادهها و افزایش خوانایی و کارایی کد شدند. در ادامه، ویژگیهای کلیدی این نسخه بررسی میشوند:
Language-Integrated Query (LINQ) (پرسوجوی یکپارچه با زبان)
ویژگی شاخص نسخه 3.0، LINQ بود که امکان نوشتن پرسوجوهای SQLمانند برای کار با دادهها در حافظه، دیتابیسها و فایلهای XML را فراهم کرد. LINQ خوانایی و انعطافپذیری کد را به شکل قابلتوجهی بهبود بخشید.
مثال: استفاده از LINQ
using System;
using System.Linq;
class Program
{
static void Main()
{
int[] numbers = { 1, 2, 3, 4, 5 };
// استفاده از LINQ برای فیلتر کردن اعداد
var evenNumbers = numbers.Where(n => n % 2 == 0);
foreach (var number in evenNumbers)
{
Console.WriteLine(number);
}
}
}
مزایا:
- امکان نوشتن کد خواناتر و مختصرتر.
- سازگاری با انواع مختلف دادهها.
Lambda Expressions (عبارات لامبدا)
عبارات لامبدا جایگزین متدهای بینام شدند و نوشتن کدهای کوتاهتر و تمیزتر برای تعریف Delegates و عبارتهای LINQ را امکانپذیر کردند.
مثال: Lambda Expressions
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
List numbers = new List { 1, 2, 3, 4, 5 };
// استفاده از عبارات لامبدا
var squares = numbers.Select(n => n * n);
foreach (var square in squares)
{
Console.WriteLine(square);
}
}
}
Auto-Implemented Properties (خصوصیات خودکار پیادهسازیشده)
این ویژگی امکان تعریف سادهتر خصوصیات (Properties) را فراهم کرد. دیگر نیازی به تعریف فیلدهای خصوصی (Private Fields) و متدهای getter/setter نبود.
مثال: Auto-Implemented Properties
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
List numbers = new List { 1, 2, 3, 4, 5 };
// استفاده از عبارات لامبدا
var squares = numbers.Select(n => n * n);
foreach (var square in squares)
{
Console.WriteLine(square);
}
}
}
Anonymous Types (نوعهای بینام)
با استفاده از نوعهای بینام، میتوانید اشیایی بسازید که نیازی به تعریف کلاس ندارند. این قابلیت بهویژه در پرسوجوهای LINQ مفید است.
مثال: Anonymous Types
var person = new { Name = "Bob", Age = 25 };
Console.WriteLine($"{person.Name}, {person.Age} years old");
Extension Methods (متدهای گسترشی)
متدهای گسترشی اجازه میدهند متدهایی را به کلاسهای موجود اضافه کنید، بدون اینکه نیاز به ارثبری یا تغییر در کد اصلی باشد. این قابلیت، یکی از پایههای LINQ است.
مثال: Extension Methods
public static class StringExtensions
{
public static bool IsLongerThan(this string str, int length)
{
return str.Length > length;
}
}
class Program
{
static void Main()
{
string message = "Hello, World!";
Console.WriteLine(message.IsLongerThan(5)); // خروجی: True
}
}
Object and Collection Initializers (مقداردهی اولیه اشیا و مجموعهها)
این ویژگیها به شما اجازه میدهند که اشیا و مجموعهها را هنگام ایجاد، بهطور همزمان مقداردهی کنید.
مثال: Object Initializers
class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
class Program
{
static void Main()
{
Person person = new Person { Name = "Charlie", Age = 40 };
Console.WriteLine($"{person.Name}, {person.Age} years old");
}
}
مثال: Collection Initializers
using System.Collections.Generic;
class Program
{
static void Main()
{
var numbers = new List { 1, 2, 3, 4, 5 };
foreach (var number in numbers)
{
Console.WriteLine(number);
}
}
}
Implicitly Typed Local Variables (متغیرهای محلی با نوع ضمنی)
var name = "Eve";
var age = 28;
Console.WriteLine($"{name}, {age} years old");
Expression Trees (درختهای عبارت)
این قابلیت امکان تجزیه و تحلیل و تغییر عبارات لامبدا را در زمان اجرا فراهم میکند. این ویژگی در تکنولوژیهایی مانند Entity Framework کاربرد دارد.
مثال: Expression Trees
using System;
using System.Linq.Expressions;
class Program
{
static void Main()
{
Expression> square = x => x * x;
Console.WriteLine(square); // خروجی: x => (x * x)
}
}
Partial Methods (متدهای جزئی)
متدهای جزئی به توسعهدهندگان اجازه میدهند متدهایی تعریف کنند که ممکن است پیادهسازی نشوند. این ویژگی معمولاً در کلاسهای تولیدشده بهصورت خودکار استفاده میشود.
مثال: Partial Methods
partial class MyClass
{
partial void OnSomethingHappened();
public void DoSomething()
{
OnSomethingHappened?.Invoke();
}
}
partial class MyClass
{
partial void OnSomethingHappened()
{
Console.WriteLine("Something happened!");
}
}
جمعبندی
نسخه C# 3.0 با معرفی قابلیتهایی مانند LINQ، Lambda Expressions، و Extension Methods زبان سیشارپ را به ابزاری قدرتمندتر و کارآمدتر برای توسعهدهندگان تبدیل کرد. این ویژگیها با ایجاد ترکیبی از برنامهنویسی شیءگرا و تابعی، امکان نوشتن کدهای خواناتر و موثرتر را فراهم کردند.
And To Do So From Now Until The Death, Whatever the Cost
برای ارسال نظر لطفا ابتدا وارد حساب کاربری خود شوید. صفحه ورود و ثبت نام