فیلم آموزش تصویری برنامه نویسی سی شارپ موسسه لیندا lynda C# Essential Training
فیلم آموزش تصویری برنامه نویسی سی شارپ موسسه لیندا lynda C# Essential Training

فیلم آموزش تصویری برنامه نویسی سی شارپ lynda C# Essential Training
توسط اساتید مجرب موسسه لیندا
به زبان انگلیسی ساده و قابل فهم
در یک دی وی دی
زبان برنامه نویسی سی شارپ (#C) جزو زبانهای سطح بالا و شیء گرا از خانواده شرکت مایکروسافت است. به دلیل قابلیت های بالای این زبان برنامه نویسی و سازگاری آن با نسخه های مختلف ویندوز، بسیاری از Application های تحت ویندوز توسط این زبان برنامه نویسی ساخته میشوند.
در ایران نیز زبان سی شارپ محبوبیت فراوانی دارد و برنامه نویسان خبره این زبان، به راحتی میتوانند در شرکت های مختلف استخدام شوند.
زبان برنامه نویسی #C همزمان با توسعه NET Framework. توسط مایکروسافت به وجود آمد و یکی از اجزای مهم ویژوال استودیو نیز به شمار میرود.
در این محصول، فیلم های آموزش زبان سی شارپ که توسط موسسه آموزشی لیندا تولید شده است را برای شما آماده کرده ایم.
فیلم های آموزشی این مجموعه در 13 فصل تنظیم شده است و تمام آموزش ها همراه با مثال های عملی میباشد. علاوه بر فیلم ها، سورس مثال هایی که تدریس میشود نیز در این مجموعه قرار داده شده تا شما در حین یادگیری و مشاهده فیلم های آموزشی، بتوانید به صورت عملی با کدهای آموزش داده شده نیز کار کنید.
سرفصل های دوره آموزشی #C عبارتند از:
- نصب و راه اندازی سی شارپ از مجموعه ویژوال استودیو
- روش ایجاد برنامه در سی شارپ
- طراحی فرم اولیه
- عبارت های شرطی در سی شارپ
- حلقه های تکرار
- انواع عملگرها در سی شارپ
- داده های مختلف و مقدار دهی به آنها
- کار با متغیرهای عددی، رشته ای، و آرایه ها
- مفهوم کلاس در سی شارپ
- تبدیل داده ها
- دیباگ کردن و رفع اشکال برنامه
- ایجاد خروجی های دلخواه
- ساخت برنامه نهایی قابل انتشار
مشخصات فیلم ها :
● تعداد: 59 فایل ویدیویی در 13 بخش
● مدت: 4 ساعت و 30 دقیقه
● زبان: انگلیسی ساده و قابل فهم
● فرمت: (MOV (960x540
اهداف طراحی زبان
• استاندارد ECMA این اهداف طراحی زبان را برای #C بر آورده میسازد: • سی شارپ یک زبان برنامه سازی ساده، مدرن، برای اهداف عمومی و شی گرا است. • به دلیل اهمیت داشتن موضوع نیرومندی و دوام و بهره وری برنامه نویس، زبان دارای چک کننده Strong Type، چک کننده مرزهای آرایه، تشخیص حالتهایی که یک متغیر مقدار دهی اولیه نشدهاست، قابلیت انتقال کدها و Garbage Collection خودکار است. • این زبان برای استفاده در اجزای توسعه نرمافزار برای دستیابی به مزایای سیستمهای توزیعی در نظر گرفته شدهاست. • قابلیت انتقال برنامه نویس بسیار مهم است، خصوصاً برای آن دسته از برنامه نویسانی که با زبانهای C و C++ آشنا هستند. • پشتیبانی از این زبان برای بینالمللی شدن بسیار مهم است. • زبان سی شارپ برای نوشتن برنامهها برای سیستمهای تعبیه شده و میزبان در نظر گرفته شدهاست، از سیستمعاملهای پیچیده بسیار بزرگ گرفته تا توابع اختصاصی بسیار کوچک. • هر چند برنامههای نوشته شده با #C طوری هستند که از لحاظ حافظه و پردازنده مورد نیاز مقرون به صرفه باشند، ولی خود زبان از لحاظ اندازه و کارایی به خوبی زبانهای C و اسمبلی نیست.
تاریخچه
در سال ۱۹۹۹، شرکت سان اجازه استفاده از زبان برنامه نویسی جاوا را در اختیار ماکروسافت قرار داد تا در سیستمعامل خود از آن استفاده کند.جاوا در اصل به هیچ پلت فرم یا سیستمعاملی وابسته نبود، ولی ماکروسافت برخی از مفاد قرار داد را زیر پا گذاشت و قابلیت مستقل از سیستمعامل بودن جاوا را از آن برداشت.شرکت سان پروندهای علیه ماکروسافت درست کرد و ماکروسافت مجبور شد تا زبان شی گرای جدیدی با کامپایل جدید که به ++C شبیه بود را درست کند. در طول ساخت دات نت، کلاسهای کتابخانهای با زبان و کامپایلر SMC نوشته شدند.در سال ۱۹۹۹ آندرس هلزبرگ گروهی را برای طراحی زبانی جدید تشکیل داد که در آن زمان نامش Cool بود و همانند C بود با خواص شی گرایی. ماکروسافت در نظر داشت اسم این زبان را تا آخر Cool قرار دهد، ولی به دلیل مناسب نبودن برای اهداف تجاری این کار را نکرد. در ارائه و معرفی رسمی .NET در PDC در سال ۲۰۰۰ این زبان به سی شارپ تغییر نام یافت و کتابخانه کلاسها و runtime در ASP.NET به#C منتقل شدند. مدیر و سرپرست طراحان در ماکروسافت آندرس هلزبرگ بود که تجربه قبلی او در طراحی Framework و زبانهای برنامه سازی++Borland، دلفی (شهر)، Turbo Pascal، ویژوال سی++ به آسانی در دستورالعملهای سی شارپ قابل رویت است و به همان خوبی در هسته CLR.
ویژگیها
برخی از تفاوتهای زبان سی شارپ با C و ++C عبارتند از:
هیچ تابع یا متغیر سراسری(Global) وجود ندارد، تمام متدها و اعضا بایستی در داخل کلاسها تعریف شوند.این امر ممکن است، هر چند برای استفاده از متغیرها و توابع عمومی باید از متدها و متغیرها در کلاسهای عمومی استفاده کرد.
متغیرهای عمومی، بر خلاف C و ++C، نمیتوانند بلاکهای پیوستی را در بر بگیرند.
سی شارپ دارای یک نوع داده بولی است (bool).برخی از عبارتها مانند while و if که شرطی هستند، نیازمند یک عبارت نوع بولی هستند.همان طور که ++C نیز دارای نوع داده بولی است، این نوع داده به راحتی میتواند به یا از Integerها تبدیل شود، و عبارتی مانند (if(a نیازمند این امر است که a از یک نوع قابل تبدیل به bool یا اشاره گر باشد.کامپایلر سی شارپ برنامه نویس را در این شرایط مجبور به استفاده از عباراتی میکند که به درستی یک مقدار bool را برمیگردانند. بنابراین دستوری مانند (if(a = b باعث بروز خطا میشوند.(به جای = بایستی از == استفاده شود)
در سی شارپ، اشاره گرهای به حافظه بایستی فقط در داخل بلوکهای unsafe استفاده شوند و برنامه در این حالت برای اجرا نیاز به اجازه از کاربر دارد. بیشتر دسترسی شی از طریق شی امن است که یا همیشه در حال اشاره به شی صحیح موجود است یا یک مقدار Null دارد. اشاره گری به شی به درد نخور یا بلاک حافظه رندم غیر ممکن است.اشاره گر نا امن میتواند به نمونهای از value-type، آرایه، رشته یا بلاکی که حافظه به آن داده شدهاست اشاره نماید. کدی که به عنوان نا امن علامت نخورده باشد، هنوز میتواند اشاره گرها را از سیستم بازیابی یا در آن ذخیره کند ولی نمیتواند مرجع جدیدی به آنها اختصاص دهد.
حافظه ساماندهی شده نمیتواند صریحا آزاد شود، ولی به طور خودکار به عنوان به درد نخور تلقی میشود.انتخاب آدرسهای به درد نخور حافظه نفوذ ناپذیر است. هم چنین #C با استفاده از عبارات، پشتیبانی مستقیمی از پایان اجباری میکند(پشتیبانی از اصطلاح Resource Acquisition Is Initialization).
وراثت چندگانه از کلاسها در این زبان پشتیبانی نمیشود.البته یک کلاس امکان ارث بری از تعداد نامحدود واسطها را دارد.پشتیبانی نکردن از وراثت چندگانه به دلیل اهداف معماری این زبان در CLI و برای جلوگیری از پیچیدگی است. در عوض میتوان از اینترفیسهای مختلف استفاده کرد. یعنی برای یک کلاس که احتمالا فرزند کلاسی دیگر است (ارث برده) میتوان چندین اینترفیس را پیاده سازی (Implement) نمود.
سی شارپ بسیار typesafe تر از C++ است. تنها تبدیلات ضمنی مثل تبدیل نوع داده کوچکتر به بزرگتر یا تبدیل نوع مشتق شده به نوع پایه به طور پیش فرض و بدون خطا صورت میپذیرد.هیچ تبدیل ضمنی ای میانBooleanها و Integerها وجود ندارد و هر تبدیل user-defined بایستی به صراحت با یکی از کلمات explicit یا implicit نشانه گذاری شود. تبدیل b به a در حالتی که a یک Integer و b یک double باشد در زبان C++ مجاز است اما در سی شارپ به یک خطای زمان کامپایل منجر میشود(بایستی به صورت explicit تعریف شود)
اعضای Enumeration در داخل محدوده شخصی خود قرار دارند.
#C قابلیت syntactic sugar را برای توابع متداول، اکسسورها و ماجولهای کسول شده در یک کلاس به صورت ویژگیها قرار دادهاست.
اکسسورها که خاصیت نیز گفته میشوند در زبان سی شارپ قادر به کنترل دسترسی اعضا و معتبرسازی دادهها هستند.
تمام انواع بازتابی(Reflection) و بازیابی(Recovery) قابل استفادهاست.
در حال حاضر (۳ ژوئن ۲۰۰۸) دارای ۷۷ کلمه رزرو شدهاست.
ساختمان داده'(ساختار و ذخیر سازی داده)
این کمپابلر در مقابل Cیا ++Cدارایه ساختار بسیار متفاوتی است که دانستن ان به برنامه نویس امکان نوشتن برنامه های بسیار بهینه را خواهد داد.
رشته ها
در Cویا ++Cساختار رشته به صورت ارایه ای از نوعchar بود که امکان اضافه کردن به رشته را محدود می کرد به دلیل ثابت بودن طول در آغاز تعریف ولی در سی شارپ دو نوع متفاوت رشته وجود دارد.که یکی به صورت ارایه ای با طول ثابت ۲۵۶(در عمل ۲۵۵)موجوداست ( به صورت پیش فرض ) و در صورتی که با کمبود جا روبرو شود فضای جدید (بزرگتر)یافته و به ان انتقال می دهد.ولی در نوع دوم رشته ها از لیست پیوندی اسفاده می شود.
سیستم یکپارچه شده
سی شارپ دارای یک سیستم نوع یکپارچهاست که به آن CTS میگویند.این بدان معناست که تمام انواع، شامل موارد اصلی مانند Integerها، مشتق شده از System.Object هستند.به عنوان مثال، هر نوع یک متد به نام ToString() را به ارث میبرد.بخاطر کارائی، انواع اولیه (و انواع مقداری) به طور داخلی فضایی برای آنها بر روی پشته در نظر گرفته میشود.
انواع داده
CTS دادهها را به دو نوع تقسیم میکند:
نوع مقداری
نوع مرجعی
انواع دادهای توده سادهای از داده میباشند.نمونههای انواع دادهای نه هویت مرجعی دارند و نه مفاهیم مقایسه مراجع را. برای مقایسه برابری یا عدم برابری انواع دادهای، خود مقدار دادهها را با یکدیگر مقایسه میکنیم مگر اینکه عملگرهای مشابه دوباره تعریف شده باشند.مقادیر دادههای مرجعی همیشه یک مقدار پیش فرض دارند و همیشه میتوانند ایجاد و یا کپی شوند.یکی دیگر از محدودیتهای انواع دادهای این ات که آنها نمیتوانند از یکدیگر مشتق شوند(ولی میتوانند اشتراکاتی داشته باشند) و هم چنین نمیتوانند در سازنده مقدار دهی اولیه شوند. مثالی از انواع دادهای، بعضی از انواع اولیه مانند int و float و char و System.DateTime میباشند. در مقابل، انواع مرجعی مفهوم تعریف مرجعی را دارند( که در آن هر نمونه از نوع مرجع، به طور ذاتی از دیگر نمونهها جدا میشود، حتی اگر داده هر دو نمونه یکی باشد). این دقیقا نمونه مشابه مقایسه تساوی یا عدم تساوی دادههای مرجعی است، که در آن آزمایش برای مرجعها از دادهایها سریع تر است. در کل نه همیشه امکان تعریف نمونه مرجعی وجود دارد و نه امکان کپی یا نمایش مقادیر مقایسه دو نمونه.ولی به هر حال انواع مرجعی خاص میتوانند این اعمال را از طریق سازندههای عمومی یا اجرای واسطهای مشابه(مثل ICloneable یا IComparable) انجام دهند.نمونههایی از انواع مرجعی، اشیا، System.Stringو Sysmet.Array میباشند. هر دو نوع داده قابلیت انعطاف توسط تعریف به وسیله کاربر را دارند. در واقع وقتی ما نوع داده ای را به تابع ای ارسال میکنیم، آدرس داده نیز فرستاده میشود.البته این امر پیش فرض است ولی برای داده های مثل آرایه، رشته ای، ادرس فرستاده میشود و ارسال از نوع مرجع میشود
Boxing و UnBoxing:
Boxing عمل تبدیل مقدار نوع دادهای به نوع مرجع مشابه آن میباشد.
مثال:
int foo = 42; // Value type...
object bar = foo; // foo is boxed to bar.
UnBoxing عمل تبدیل نوع مرجع به نوع دادهای میباشد. مثال:
int foo = 42; // Value type.
object bar = foo; // foo is boxed to bar.
int foo2 = (int)bar; // Unboxed back to value type.
سی شارپ به برنامه نویس با استفاده از کلمه کلیدی Struct اجازه میدهد تا انواع مقداری User-defined را ایجاد کند. از دیدگاه برنامه نویسی، آنها کلاسهای سبک وزن به نظر میرسند. برخلاف کلاسها (که بر روی heap قرار میگیرند) و شبیه به انواع اولیه استاندارد مانند انواع مقداری Structها نیز بر روی پشته قرار میگیرند.آنها همچنین میتوانند قسمتی از یک شئ باشند، یا در یک آرایه مرتب شوند، بدون حافظه غیر مستقیمی که به طور معمول برای انواع کلاس تخصیص مییابد.
ویژگیهای جدید در C# ۲.۰
ویژگیهای جدید در C# .NET SDK ۲.۰ (مطابق با سومین ویرایش استاندارد ECMA-۳۳۴):
کلاسهای partial
کلاسهای Partial اجازه اجرای کلاسها از بیش از یک سورس فایل را میدهند.این امر اجازه میدهد تا کلاسهای بسیار بزرگ را قطعه قطعه کنیم و همچنین برای زمانی که برخی قسمتهای یک کلاس به طور خودکار تولید میشوند مفید است.
file۱.cs:
public partial class MyClass
{
public MyClass()
{
// implementation
}
}
file۲.cs:
public partial class MyClass
{
public void SomeMethod()
{
// implementation
}
}
Genericها
genericها یا نوعهای پارامتری شده یا چندریختیهای پارامتری یک ویژگی جدید .NET ۲.۰ است که به وسیله سی شارپ پشتیبانی میشود.برخلاف Templateهای سی پلاس پلاس، در این انواع به جای اینکه نمونه سازی توسط کامپایلر انجام شود، در زمان اجرا صورت میگیرد، بنابراین میتوانند چند زبانه باشند در حالی که ++C نمیتواند.آنها دارای ویژگیهایی هستند که به طور مستقیم توسطTemplateهای C++ پشتیبانی نمیشوند مانند نوع محدودیتها در پارامترهای Generic با استفاده از رابط ها(Interface). سی شارپ از پارامترهایهای Generic بدون نوع پشتیبانی نمیکند.بر خلاف genericهای جاوا،genericهای دات نت برای پارامتری کردن انواع دادهای در اشیا ماشین مجازی CLI، از مفاهیم شی گرایی استفاده میکنند که اجازه بهینه سازی و حفاظت انواع اطلاعات را میدهد.
کلاسهای static
کلاسها به صورت Static قابل تعریف نیستند مگر اینکه تمام اعضای آنها Static باشند.که این امر بسیار شبیه به مفهوم مدل در زبانهای رویهای است.(زبان رویهای : یک زبان برنامه نویسی که در آن عنصر اصلی برنامه نویسی یک زیربرنامهاست.مانند زبانهای C، پاسکال و...)
یک شکل جدید از تکرار کننده با استفاده از سازنده توابع
یک شکل جدید از iterator(تکرار کننده)، با استفاده از ساختار yield return بسیار شبیه به yield زبان Python.
// Method that takes an iterable input (possibly an array) and returns all even numbers.
public static IEnumerable<int> GetEven(IEnumerable<int> numbers)
{
foreach (int i in numbers)
{
if (i % 2 == 0) yield return i;
}
}
Delegateهای ناشناس
Delegate یک شی میباشد که حاوی یک یا چند اشاره گر به توابع میباشد.که با Invoke کردن آن تمامی توابع اشاره شده داخل آن اجرا میشوند.
Delegateهای ناشناس که عملکردهای محدودی را در #C به وجود میآورند.کد کنار بدنه Deletage ناشناس، دسترسی کامل برای خواندن یا نوشتن در متغیرهای عمومی، پارامترهای توابع و اعضای کلاسهای دارای محدوده Deletage را دارد ولی پارامترهای out و ref را پشتیبانی نمیکند. برای مثال :
int SumOfArrayElements(int[] array)
{
int sum = 0;
Array.ForEach(
array,
delegate(int x)
{
sum += x;
}
);
return sum;
}
Delegate covariance and contravariance
تبدیل گروههای متد به نوع Deletage در برگشت دارای covariant و در انواع پارامترها دارای contravariant هستند.
اکسسورهای یک خاصیت(get و set) میتوانند دارای سطح دسترسی متفاوتی باشند.
مثال :
string status = string.Empty;
public string Status
{
get { return status; } // anyone can get value of this property,
protected set { status = value; } // but only derived classes can change it
}
نکته مهم : سطح دسترسی خاصیت نمیتواند بالاتر از سطح دسترسی اکسسورها باشد.به عنوان مثال private بودن خاصیت و public بودن اکسسور باعث بروز خطا میشود.
نوع داده Nullable
نوع داده Nullable (که با یک علامت سوال قابل تشخیص است : int? i = null;)اجازه تخصیص مقدار null را برای انواع دادهای میدهد.این امر باعث بهبودی فعل و انفعال با پایگاه داده SQL میشود. در این حالت نوع ستونی INTEGER NULL در SQL به طور مستقیم به int? در سی شارپ تبدیل میشود.
دادههای Nullable در آخرین لحظات آگوست ۲۰۰۵ اضافه شدند چند هفته مانده به اتمام کار اداری و برای بهبود زبان.متغیر Null در حقیقت خالی نیست، بلکه نمونهای است از struct Nullable<T> با ویژگی HasValue مساوی false. وقتی در برنامه قرار میگیرد، خود به خود نمونه خالی در آن قرار میگیرد، نه مقدار خود آن، در نتیجه اشاره گر مقصد همیشه غیر Null میباشد، حتی برای مقادیر Null. کد زیر نضص بالا را مشخص میکند:
int? i = null;
object o = i;
if (o == null)
Console.WriteLine(«Correct behaviour - runtime version from September 2005 or later»);
else
Console.WriteLine(«Incorrect behaviour - pre-release runtime (from before September 2005)»);
وقتی درون شی ای کپی میشود، نمونه Nullable به صورت تشریفاتی در آن قرار میگیرد و در نتیجه مقادیر و منابع Null با هم برابر میشوند.در گذشته این خاصیت دارای مجادله بود تا زمانی که علاوه بر .NET۲، به هسته CLR نیز مجهز شد و همه تکنولوژیها نظیر #CوVBوSQL Server ۲۰۰۵و Visual Studio ۲۰۰۵ را شامل شد.
Coalesce Operator
مقدار اولین عملوندی که null نباشد را برمی گرداند.(یا null، برای زمانی که تمام عملوندها null باشند)
object nullObj = null;
object obj = new Object();
return nullObj ?? obj; // returns obj
کاربرد اصلی این عملگر در قرار دادن یک مقدار nullable در یک مقدار non-nullable با استفاده از یک دستورالعمل سادهاست.
int? i = null;
int j = i ?? 0; /* Unless i is null, initialize j to i. Else (if i is null), initialize j to 0.*/
ویژگیهای جدید در C# ۳.۰
این ورژن در تاریخ ۱۹ نوامبر سال ۲۰۰۷ به عنوان بخشی از .NET Framework ۳.۵ عرضه شد.که شامل ویژگیهای جدید الهام شده از زبانهای برنامه نویسی اصلی(Functional) مانند Haskell و ML، و الگوی LINQ برای CLR است.در حال حاضر توسط هیچ موسسه استاندارد سازی ای تائید نشدهاست.
معرفی (Language-Integrated Query(LINQ
LINQ، یک زبان پرس و جوی قابل انعطاف و همه منظوره برای بسیاری از انواع منبع داده هااست( مثل انتخاب اشیا شناور، سندهای XML، بانکهای اطلاعاتی و . . .) که در ویژگیهای ۳#C جمع شدهاند. سینتکس زبان به زحمت از SQL گرفته شدهاست، برای مثال:
int[] array = { 1, 5, 2, 10, 7 };
// Select squares of all odd numbers in the array sorted in descending order
IEnumerable<int> query = from x in array
where x % 2 == 1
orderby x descending
select x * x;
مقدار دهی به اشیا
Customer c = new Customer(); c.Name = "James";
عبارت بالا میتواند به صورت زیر نوشته شود:
Customer c = new Customer { Name="James" };
مقدار دهی Collection
MyList list = new MyList();
list.Add(1);
list.Add(2);
عبارت بالا میتواند به صورت زیر نوشته شود:
MyList list = new MyList { 1, 2 };
فرض کنید که اجزای MyList و System.Collections.IEnumerable دارای متد عمومی Add هستند.
انواع دادهای بی نام
var x = new { FirstName="James", LastName="Frank" };
C# ۲.۰توابع بی نام را معرفی کرد. C# ۳.۰هم انواع بی نام را معرفی میکند.با استفاده از این ویژگی برنامه نویسان قادر خواهند بود به صورت Inline انواع دلخواه خود را ایجاد کنند.به نمونه زیر توجه کنید:
static void Main(string[] args)
{
var anonymousType = new { Name = string.Empty, Age = 0 };
}
کد ارائه شده، یک نوع بی نام را تعریف میکند که از طریق متغیر ضمنی محلی به نام anonymousType در اختیار قرار میگیرد.
چرا Anonymous types؟ انواع بی نام بهترین گزینه برای تولید Entity Typeها میباشند.همانطور که گفته شد Entity Typeها فقط حاوی دادهها هستند.بنابراین به بهترین نحو میتوان دادههای دریافت شده از کاربر را در انواع بی نام بسته بندی کرد.
نتیجه نوع متغیر محلی
var x = new Dictionary<string, List<float>>();
کد بالا با کد زیر قابل تعویض میباشد:
Dictionary<string, List<float>> x = new Dictionary<string, List<float>>();
این ویژگی تنها یک ntactic sugarراحت برای کوتاه تر بیان کردن متغیرهای محلی نمیباشد، بلکه برای تعریف متغیرهای بی نام لازم نیز است.
عبارات لامبدا :
عبارات لامبدا یک راه کوتاه برای نوشتن مقادیر توابع بی نام کلاس اول را فراهم میکنند. دو مثال زیر را در نظر بگیرید:
listOfFoo.Where(delegate(Foo x) { return x.Size> 10; })
listOfFoo.Where(x => x.Size> 10);
در مثالهای فوق، عبارات لامبدا صرفا یک نوع سینتکس برای delegateهای بی نام با مقادیر دارای بازگشت هستند.هر چند با توجه به نوع متن استفاده میشوند، کامپایلر #C میتواند لامبداها را به ASTها نیز تبدیل کند تا بعداً در زمان اجرا نیز بتوانند پردازش شوند.در مثال فوق، اگر listOfFoo یک مجموعه ساده داخل حافظه نباشد، ولی یک پوشه در اطراف جدول بانک اطلاعاتی میباشد. این تکنیک میتواند برای بهینه کردن اجرا، برای ترجمه بدنه لامبدا به عبارت معادل آن در SQL استفاده شود.در هر یک از دو راه فوق، خود عبارت لامبدا دقیقا شبیه کد به نظر میرسد، بنابراین روش استفاده در زمان اجرا، برای کاربر ناپیدا میباشد.
یکی از ویژگیهایی کهC# ۲.۰ ارائه کرد، توانایی تعریف توابع به صورت Inline بود که این ویژگی با عنوان توابع بی نام (anonymous methods) شناخته میشود. توابع بی نام در پارهای مواقع بسیار مفیدند. اما نحو(syntax) به کارگیری آنها دشوار میباشد. عبارات لامبدا ویژگی توابع بی نام را دارند اما با نحو ساده تری در C# ۳.۰معرفی شدهاند.به نمونه زیر توجه کنید:
static void Main(string[] args)
{
(int x) => x + 1; // explicitly typed parameter
(y, z) => y * z; // implicitly typed parameter
}
تعریف عبارات لامبدا از نحو (syntax) خاصی پیرو میکند. همانطور که در کد بالا مشاهده میکنید، پارامترهای تابع هم به صورت صریح و هم به صورت ضمنی قابل بیان اند. کلمه return به صورت ضمنی حذف شدهاست. تابع معادل عبارت لامبدای اول به صورت زیر است:
int Fn(int x)
{
return x+1;
}
لیست پارامترها و بدنه عبارت لامبدا توسط => از هم جدا میشوند. در صورتی که تعریف عبارت لامبدا بیشتر از یک خط کد باشد میتوان بدنه آن را با استفاده از {} نشان داد.
static void Main(string[] args)
{
(int x) => { x + 1; return x * x; };
}
خواص خودکار
کامپایلر به طور خودکار یک متغیر نمونه خصوصی و قرار دهنده و قرار گیرنده مناسب تولید میکند، مانند :
public string Name { get; private set; }
توابع بسط داده شده
توابع بسط داده شده حالتی از سینتکس Suger هستند که امکان اضافه کردن متد جدید به کلاس موجود را بیرون از حوزه تعریف آن فراهم میکنند.در این مثال، تابع بسط داده شده یک تابع ایستا است که قابل فراخوانی توسط تابع مشابه میباشد.گیرنده فراخوانی مقید به اولین پارامتر تابع تحت عنوان this میباشد:
public static class StringExtensions
{
public static string Left(this string s, int n)
{
return s.Substring(0, n);
}
}
string s = "foo";
s.Left(3); // same as StringExtensions.Left(s, 3);
زبان سی شارپ کلمه کلیدی sealed را برای این منظور ارائه کرد که امکان ارث بری از یک کلاس را صلب کند. یعنی با اضافه شدن این کلمه کلیدی به ابتدای تعریف کلاس، امکان ارث بری از آن غیر ممکن میشود. C# ۳.۰ ویژگی جدیدی را در اختیار برنامه نویسان قرار میدهد به این صورت که میتوان هر نوع کلاسی حتی کلاسهای مهر شده با Sealed را با استفاده از Extension methodsبسط داد.
توابع جزئی
توابع جزئی به تولید کنندههای کد اجازه تولید اعلان توابع به صورت نقاط گسترش یافتهای که تنها شامل کدهای اصلی هستند را میدهد، در صورتی که یک نفر آن را در قسمتی از کلاسی دیگر اجرا کند.
متغیرهای ضمنی محلی
C# ۳.۰ کلمه کلیدی جدید var را معرفی میکند که به کمک آن برنامه نویسان قادر خواهند بود متغیرهای محلی خود را بدون ذکر صریح نوع آنها، تعریف کنند.
namespace CS3_Test
{
class Program
{
static void Main(string[] args)
{
var string_value = "Hello C# 3.0";
var int_value = 3;
}
}
}
یکی از ویژگیهای اصلی زبان سی شارپ،Strong Type بودن آن است. Strong Type بودن زبان به این معناست که با اعلان یک متغیر، نوع آن صریحا باید توسط برنامه نویس مشخص شود.
کلمات کلیدی : دانلود فیلم آموزشی، دانلود فیلم، دانلود ویدیوی آموزشی، ویدئو آموزش، دانلود آموزش تصویری، آموزش به صورت فیلم، دانلود فیلم آموزش سی شارپ، دانلود آموزش سی شارپ، دانلود ویدیوی آموزش برنامه نویسی سی شارپ، ویدئو آموزش زبان سی شارپ، دانلود آموزش تصویری برنامه نویسی C Sharp، آموزش سی شارپ به صورت فیلم، دانلود C Sharp Essential Training،

فیلم آموزش تصویری برنامه نویسی سی شارپ lynda C# Essential Training
توسط اساتید مجرب موسسه لیندا
به زبان انگلیسی ساده و قابل فهم
در یک دی وی دی
قیمت : 7500 تومان
روش خرید: برای خرید "فیلم آموزش تصویری برنامه نویسی سی شارپ موسسه لیندا lynda C# Essential Training" ، پس از کلیک روی دکمه زیر و تکمیل فرم سفارش، ابتدا محصول یا محصولات مورد نظرتان را درب منزل یا محل کار تحویل بگیرید، سپس وجه کالا و هزینه ارسال را به مامور پست بپردازید. جهت مشاهده فرم خرید، روی دکمه زیر کلیک کنید.
1-روی دکمه خرید پستی کلیک نمایید.
2-فرم مربوطه را به صورت کامل و صحیح پر نمایید.
3-سفارش خود را درب منزل از پستچی تحویل گرفته سپس هزینه را پرداخت نمایید.
سایر محصولات :
خرید پستی بازی بسکتبال حرفه ای 2012 NBA 2K12اورجینال خرید پستی آموزش نصب شبکه های کوچک خانگی و اداری lynda Small Office Network Training network خرید پستی فیلم آموزش تصویری برنامه نویسی سی شارپ موسسه لیندا lynda C# Essential Training خرید پستی بازی Angry Birds Spaceاورجینال خرید پستی بازی فکری جک قاتل Jack the Ripper کارت ViP سایت دارینوساورجینال خرید پستی بازی گاندوی سوسمار ایرانی همراه با بازی کارگاه تیزبیناورجینال خرید پستی بازی PES 2014اورجینال خرید پستی بازی PES 2014 Brasilاورجینال خرید پستی بازی فوتبال یورو 2012 Euroاورجینال خرید پستی آموزش زبان انگلیسی آمریکایی توسط نرم افزار Euro Talk American Talk Now خرید پستی بازی PES 2010 ARSENALاورجینال خرید پستی نرم افزار PTC: Creo Elements 20 طراحی سه بعدی قطعات صنعتیاورجینال خرید پستی بازی PES 2010 اینترمیلاناورجینال خرید پستی بازی TIN TIN ماجراهای تن تن و میلواورجینال خرید پستی بازی جدید Jane’s Advanced Strike Fightersاورجینال خرید پستی بازی FIFA 2011اورجینال خرید پستی آموزش کاربردی 3D Home v8 نرم افزاراورجینال خرید پستی اموزش جامع Reason v4 سری ساخت صدا نرم افزاراورجینال خرید پستی آموزش J#Net از پایه تا پیشرفته با متد اینتراکتیواورجینال خرید پستی آموزش جامع Solid Works 2005 مقدماتیاورجینال خرید پستی اموزش جامع Archicad 11 طراحی سه بعدی داخلی و خارجی ساختماناورجینال خرید پستی آموزش کاربردی InDesign CS4MEاورجینال خرید پستی آموزش تولید یک پروژه #C از ابتدا تا انتهااورجینال خرید پستی آموزش InstallShield 12:Premier Edition مقدماتی تا پیشرفتهاورجینال خرید پستی آموزش برنامه نویسی MY SQL Training مقدماتی متوسطاورجینال خرید پستی آموزش جامع Visual C# Net 2005 پیشرفتهاورجینال خرید پستی آموزش AJAX کد نویسی تحت وباورجینال خرید پستی آموزش دلفی Delphi 2010 به همراه نرم افزاراورجینال خرید پستی بازی اوقات فراغت 4 هیجان انگیز و سرگرم کنندهاورجینال خرید پستی بازی اوقات فراغت 5 هیجان انگیز و سرگرم کنندهاورجینال خرید پستی بازی PES Golden 2011اورجینال خرید پستی آموزش Windows Vista دوره متوسط خرید پستی بازی اوقات فراغت 7 هیجان انگیز و سرگرم کنندهاورجینال خرید پستی آموزش کاربردی Dream Weaver CS5 طراحی وب سایتاورجینال خرید پستی آموزش کاربردی Crystal Reports 2008اورجینال خرید پستی آموزش کاربردی ADONet 35اورجینال خرید پستی آموزش جامع برنامه نویسی ADONET 2009 مقدماتی تا پیشرفتهاورجینال خرید پستی آموزش تکنیک های پیشرفته FLASH 8 اسکریپ نویسی 2اورجینال خرید پستی آموزش کاربردی Share Point 2007 ایجاد و طراحی صفحات وباورجینال خرید پستی آموزش SONAR 7 ساخت صدا مقدماتی تا پیشرفتهاورجینال آموزش جامع Project 2016 اورجینال
تعمیرات کارت گرافیک کامپیوتر بهمراه هدیهراهنمای اسمبل و تعمیر سیستم اورجینال
TERMINATOR SALVATIONاورجینال
آموزش دلفی Delphiاورجینال
spiderman 2 اورجینال
SPLIT SECOND XBOX360اورجینال
ابزار های کاربردی 2 اورجینال
photoshop cc collection 2017 اورجینال
فیلم آموزش تصویری برنامه نویسی سی شارپ موسسه لیندا lynda C# Essential Training
کلمات کلیدی :
آموزش تصویری برنامه تصویری برنامه نویسی زبان برنامه نویسی یلم آموزش تصویری static void main void main string main string args شارپ موسسه لیندا برنامه نویسی این زبان آموزش تصویری انواع دادهای نوع داده تصویری برنامه زبان برنامه برنامه نویس این امر برنامه انواع استاده آموزش نویسی string دارای توابع میشود