آموزش بهترین روش های کار کردن با جنریک ها (Generic) در سی شارپ

Working with C# 9 Generics - Best Practices
تعداد ویدئو 30
زمان دوره 02:41:05
مترجم مرتضی گیتی
ناظر ترجمه مرتضی گیتی
دوبلر مرتضی گیتی
ناظر دوبلاژ مرتضی گیتی
سایت منتشر کننده پلورال سایت

آموزش بهترین روش های کار کردن با جنریک ها (Generic) در سی شارپ یکی دیگر از آموزش های گروه آموزشی پرووید می باشد که در این قسمت آن را به شما معرفی می کنیم. این بسته آموزشی نیز یکی از دوره های آموزشی دیگر که در حوزه فارسی سازی آموزش های انگلیسی تنظیم شده است می باشد. عنوان این بسته آموزشی، آموزش بهترین روش های کار با جنریک ها (Generic) در سی شارپ 9 است که با نام اصلی Working with C# 9 Generics – Best Practices از شرکت OriginalProducerPlaceholder منتشر شده است.

جنریک ها در سی شارپ

جنریک ها به شما امکان می دهند تا مشخصات نوع داده عناصر استفاده شده در کد درون یک کلاس یا یک متد را تا زمانی که واقعاً در برنامه به اجرا شدن نرسیده است به تعویق بیندازید. به عبارت دیگر، جنریک ها به شما امکان می دهند کلاس یا متدی بنویسید که می تواند با هر نوع داده ای کار کند. با استفاده از جنریک ها، شما مشخصات کلاس یا متد را با پارامترهای قابل جایگزینی برای انواع داده ای مورد نظرتان را می نویسید. هنگامی که کامپایلر با تابع سازنده کلاس و یا یک فراخوانی متد مواجه می شود، کد خاصی را بر اساس نوع داده ای خاص لحاظ شده تولید می کند. یک مثال ساده به درک مفهوم کمک می کند.

using System;

using System.Collections.Generic;

namespace GenericApplication {

public class MyGenericArray {

private T[] array;

public MyGenericArray(int size) {

array = new T[size + 1];

}

public T getItem(int index) {

return array[index];

}

public void setItem(int index, T value) {

array[index] = value;

}

}

class Tester {

static void Main(string[] args) {

//declaring an int array

MyGenericArray intArray = new MyGenericArray(5);

//setting values

for (int c = 0; c < 5; c++) {

intArray.setItem(c, c*5);

}

//retrieving the values

for (int c = 0; c < 5; c++) {

Console.Write(intArray.getItem(c) + ” “);

}

Console.WriteLine();

//declaring a character array

MyGenericArray charArray = new MyGenericArray(5);

//setting values

for (int c = 0; c < 5; c++) {

charArray.setItem(c, (char)(c+97));

}

//retrieving the values

for (int c = 0; c< 5; c++) {

Console.Write(charArray.getItem(c) + ” “);

}

Console.WriteLine();

Console.ReadKey();

}

}

}

هنگامی که کد بالا کامپایل و اجرا می شود، نتیجه زیر را ایجاد می کند.

0 5 10 15 20

a b c d e

Working with C# 9 Generics - Best Practices Snapshot

ویژگی های جنریک ها

جنریک ها در واقع تکنیکی هستند که برنامه های شما را به روش های زیر غنی می کنند:

این به شما کمک می کند تا استفاده مجدد از کد و یا code reuse، ایمنی تایپ و یا type safety و عملکرد و یا performance را به حداکثر برسانید.

شما می توانید کلاس های کالکشنی جنریک نیز ایجاد کنید. دات نت فریم ورک شامل چندین کلاس کالکشنی جنریک در فضای نام System.Collections.Generic است. می توانید از این کلاس های کالکشنی جنریک به جای کلاس های کالکشنی موجود در فضای نام System.Collections استفاده کنید.

می توانید اینترفیس ها، کلاس ها، متد ها، event ها و delegate ها جنریک ایجاد کنید.

می‌توانید کلاس‌های جنریکی را ایجاد کنید که محدود به فعال کردن دسترسی به متد ‌های خاصی که در یک نوع داده ای خاصی ایجاد شده اند می باشند.

می توانید اطلاعاتی در مورد نوع های داده ای مورد استفاده در یک نوع داده جنریک را در زمان اجرا با استفاده از رفلکشن به دست آورید.

متد های جنریک

در مثال قبلی، ما از یک کلاس جنریک استفاده کردیم. امکان تعریف کردن یک متد جنریک با یک type parameter نیز وجود دارد. مثال زیر این موضوع را نشان می دهد.

using System;

using System.Collections.Generic;

namespace GenericMethodAppl {

class Program {

static void Swap(ref T lhs, ref T rhs) {

T temp;

temp = lhs;

lhs = rhs;

rhs = temp;

}

static void Main(string[] args) {

int a, b;

char c, d;

a = 10;

b = 20;

c = ‘I’;

d = ‘V’;

//display values before swap:

Console.WriteLine(“Int values before calling swap:”);

Console.WriteLine(“a = {0}, b = {1}”, a, b);

Console.WriteLine(“Char values before calling swap:”);

Console.WriteLine(“c = {0}, d = {1}”, c, d);

//call swap

Swap(ref a, ref b);

Swap(ref c, ref d);

//display values after swap:

Console.WriteLine(“Int values after calling swap:”);

Console.WriteLine(“a = {0}, b = {1}”, a, b);

Console.WriteLine(“Char values after calling swap:”);

Console.WriteLine(“c = {0}, d = {1}”, c, d);

Console.ReadKey();

}

}

}

هنگامی که کد بالا کامپایل و اجرا می شود، نتیجه زیر را ایجاد می کند.

مقادیر int قبل از فراخوانی swap:

a = 10، b = 20

مقادیر کاراکتر قبل از فراخوانی مبادله:

c = I، d = V

مقادیر int پس از فراخوانی swap:

a = 20، b = 10

مقادیر کاراکتر پس از فراخوانی مبادله:

c = V، d = I

دیلیگیت های جنریک

می توانید یک دیلیگیت های جنریک را با type parameter تعریف کنید. کد زیر مثالی از این موضوع است.

delegate T NumberChanger(T n);

مثال زیر استفاده از این دیلیگیت را نشان می دهد.

using System;

using System.Collections.Generic;

delegate T NumberChanger(T n);

namespace GenericDelegateAppl {

class TestDelegate {

static int num = 10;

public static int AddNum(int p) {

num += p;

return num;

}

public static int MultNum(int q) {

num *= q;

return num;

}

public static int getNum() {

return num;

}

static void Main(string[] args) {

//create delegate instances

NumberChanger nc1 = new NumberChanger(AddNum);

NumberChanger nc2 = new NumberChanger(MultNum);

//calling the methods using the delegate objects

nc1(25);

Console.WriteLine(“Value of Num: {0}”, getNum());

nc2(5);

Console.WriteLine(“Value of Num: {0}”, getNum());

Console.ReadKey();

}

}

}

هنگامی که کد بالا کامپایل و اجرا می شود، نتیجه زیر را ایجاد می کند.

ارزش تعداد: 35

ارزش تعداد: 175

سرفصل مطالب آموزش ویدئویی آموزش ویدئویی بهترین روش های کار کردن با جنریک ها (Generic) در سی شارپ

دسته های محصولات

افزودن به سبد خرید