ReactJS is wildly popular and thus wildly supported. TypeScript is increasingly popular, and thus increasingly supported.
The two together? Not as much. Given that they both change quickly, it's hard to find accurate learning materials.
React+TypeScript, with JetBrains IDEs? That three-part combination is the topic of this series. We'll show a little about a lot. Meaning, the key steps to getting productive, in the IDE, for React projects using TypeScript. Along the way, we'll show test-driven development and emphasize tips and tricks in the IDE.
Other videos from this series:
1. Project Setup: https://youtu.be/wm8WdAB64gw
2. Project Cleanup: https://youtu.be/b0KrB31hN5k
3. Testing: https://youtu.be/Y_TGIsFnvo4
4. Debugging Node.js: https://youtu.be/r1kwXZnO8gw
5. Debugging in Chrome: https://youtu.be/dvmZi_DWu9I
6. TSX and ES6: https://youtu.be/JXrZDUzkc2Q
7. Class Props: https://youtu.be/HYmoeUF9ZH0
8. Class State: https://youtu.be/21-VMTmiV8E
9. Rich Events and Testing: https://youtu.be/OO7OmA5UlQM
10. Presentation Components: https://youtu.be/SnCGW6JUo4E
مسیرراهها
ASP.NET MVC
- ASP.NET MVC #1
- ASP.NET MVC #2
- ASP.NET MVC #3
- ASP.NET MVC #4
- ASP.NET MVC #5
- ASP.NET MVC #6
- ASP.NET MVC #7
- ASP.NET MVC #8
- ASP.NET MVC #9
- ASP.NET MVC #10
- ASP.NET MVC #11
- ASP.NET MVC #12
- ASP.NET MVC #13
- ASP.NET MVC #14
- ASP.NET MVC #15
- ASP.NET MVC #16
- ASP.NET MVC #17
- ASP.NET MVC #18
- ASP.NET MVC #19
- ASP.NET MVC #20
- ASP.NET MVC #21
- ASP.NET MVC #22
- ASP.NET MVC #23
- ASP.NET MVC #24
- نحوه ارتقاء برنامههای موجود MVC3 به MVC4
- تغییرات بوجود آمده در Bundling and Minification -MVC4
- تغییرات بوجود آمده در Mobile Features-MVC4
- تغییرات بوجود آمده در Single Page Application (SPA)-MVC4
- تغییرات بوجود آمده در Razor -MVC4
- Globalization در ASP.NET MVC
- Globalization در ASP.NET MVC - قسمت دوم
- Globalization در ASP.NET MVC - قسمت سوم
- Globalization در ASP.NET MVC - قسمت چهارم
- Globalization در ASP.NET MVC - قسمت پنجم
- Globalization در ASP.NET MVC - قسمت ششم
- Globalization در ASP.NET MVC - قسمت هفتم
- بررسی تغییرات ASP.NET MVC 5 beta1
- مسیریابی (Routing) در ASP.NET MVC 5.x
- Attribute Routing در ASP.NET MVC 5
- قابلیت Attribute Routing در ASP.NET MVC 5
- یک تکنیک جالب در نحوه نام گذاری فیلدهای دیتابیس به منظور استفاده بهینه از فایلهای T4 در MVC 5
- نگاهی به هویت سنجی کاربران در ASP.NET MVC 5
- سفارشی کردن ASP.NET Identity در MVC 5
- افزودن تصدیق ایمیل به ASP.NET Identity در MVC 5
- ایجاد کپچایی (captcha) سریع و ساده در ASP.NET MVC 5
- توزیع یک اپلیکیشن ASP.NET MVC 5 روی Windows Azure
- معماری لایه بندی نرم افزار #1
- معماری لایه بندی نرم افزار #2
- معماری لایه بندی نرم افزار #3
- معماری لایه بندی نرم افزار #4
- CheckBoxList در ASP.NET MVC
- RadioButtonList در ASP.NET MVC
- مدیریت محل اعمال Google analytics در ASP.NET MVC
- استفاده از HttpGet در ASP.NET MVC، آری یا خیر؟!
- اثر وجود سشن بر پردازش موازی در ASP.NET
- استفاده از دکمههای CSS توئیتر در ASP.NET MVC
- نحوه صحیح تولید Url در ASP.NET MVC
- استفاده از OpenID در وب سایت جهت احراز هویت کاربران
- متدهای کمکی مفید در پروژههای asp.net mvc
- T4MVC : یکی از الزامات مدیریت پروژههای ASP.NET MVC
- مقدمه ای بر AutoMapper
- بهبود سرعت نمایش صفحات در ASP.NET MVC با حذف View Engines اضافی
- محدود کردن کاربرها به آپلود فایلهایی خاص در ASP.NET MVC
- ارسال فایل در ASP.NET MVC و اعتبار سنجی سمت کاربر
- فعال سازی قسمت ارسال فایل و تصویر ویرایشگر آنلاین RedActor در ASP.NET MVC
- معرفی پروژه Orchard
- مباحث تکمیلی مدلهای خود ارجاع دهنده در EF Code first
- سازگار کردن لینکهای قدیمی یک سایت با ساختار جدید آن در ASP.NET MVC
- CAPTCHAfa
- نکتهای در استفاده از AutoMapper
- یکپارچه سازی CKEditor با Lightbox
- تهیه خروجی RSS در برنامههای ASP.NET MVC
- ایجاد Helper سفارشی جهت نمایش ویدئو در ASP.NET MVC
- ساخت DropDownListهای مرتبط به کمک jQuery Ajax در MVC
- استفاده از دکمههای CSS توئیتر در ASP.NET MVC - قسمت دوم
- با ASP.MVC چه مزایایی را به دست خواهیم آورد
- نحوه اضافه کردن Auto-Complete به جستجوی لوسین در ASP.NET MVC و Web forms
- مقابله با پسوردهایی که ساده حدس زده میشوند
- غیرفعال کردن کش مرورگر در MVC
- Best Practice هایی برای ASP.NET MVC - قسمت اول
- چک لیست تهیه یک برنامه ASP.NET MVC
- استفاده از FluentValidation در ASP.NET MVC
- نحوه اجباری کردن استفاده از WWW در ASP.NET MVC
- نمایش رکوردها به ترتیب اولویت به کمک jQuery UI sortable در ASP.NET MVC
- کنترل عمومی فایلهای آپلودی در ASP.NET MVC
- هدایت خودکار کاربر به صفحه لاگین در حین اعمال Ajax ایی
- مدیریت سفارشی سطوح دسترسی کاربران در MVC
- بهبود SEO در ASP.NET MVC
- ایجاد قسمتهای Toggle در سایت با jQuery
- آشنایی و بررسی ابزار MiniProfiler
- استفاده از Flash Uploader در ASP.NET MVC
- استایل دهی به ستونهای header در WebGrid
- ELMAH و حملات XSS
- آموزش MEF#2(استفاده از MEF در Asp.Net MVC)
- نحوه استفاده از ViewModel در ASP.NET MVC
- مخفی کردن کوئری استرینگها در ASP.NET MVC توسط امکانات Routing
- توزیع پروژههای ASP.NET MVC بدون ارائه فایلهای View آن
- حذف هدرهای مربوط به وب سرور از طریق برنامه نویسی
- ایجاد helper برای Nivo Slider در Asp.net Mvc
- آشنایی با Fluent Html Helpers در MVC
- نحوه استفاده از افزونه Firebug برای دیباگ برنامههای ASP.NET مبتنی بر jQuery
- عدم امکان تغییر اطلاعات مدل در HTML Helpers پس از Postback در ASP.NET MVC
- اضافه کردن Watermark به تصاویر یک برنامه ASP.NET MVC در صورت لینک شدن در سایتی دیگر
- چگونگی رسیدگی به Null property در AutoMapper
- return File در ASP.NET MVC و نامهای یونیکد
- تولید SiteMap استاندارد و ایجاد یک ActionResult اختصاصی برای Return کردن SiteMap تولید شده
- نحوه ایجاد یک تصویر امنیتی (Captcha) با حروف فارسی در ASP.Net MVC
- الگوی PRG در ASP.NET MVC
- اعتبارسنجی سایتهای چند زبانه در ASP.NET MVC - قسمت اول
- آغاز به کار با Twitter Bootstrap در ASP.NET MVC
- استفاده از Twitter Bootstrap در کارهای روزمره طراحی وب
- نگاهی به اجزای تعاملی Twitter Bootstrap
- اعمال کلاسهای ویژه اعتبارسنجی Twitter bootstrap به فرمهای ASP.NET MVC
- ویرایش قالب پیش فرض Add View در ASP.NET MVC برای سازگار سازی آن با Twitter bootstrap
- استفاده از افزونه Typeahead مجموعه Twitter Bootstrap در ASP.NET MVC
- استفاده از modal dialogs مجموعه Twitter Bootstrap برای گرفتن تائید از کاربر
- Bundling and Minifying Inline Css and Js
- نمایش فرمهای مودال Ajax ایی در ASP.NET MVC به کمک Twitter Bootstrap
- MVC vs 3-Tier Pattern
- پلاگین جستجو با jquery و twitter bootstrap
- نمایش خطاهای اعتبارسنجی سمت کاربر ASP.NET MVC به شکل Tooltip به کمک Twitter bootstrap
- نمایش خطاهای اعتبارسنجی سمت کاربر ASP.NET MVC به شکل Popover به کمک Twitter bootstrap
- ساخت قالبهای نمایشی و ادیتور دکمه سه وضعیتی سازگار با Twitter bootstrap در ASP.NET MVC
- پیاده سازی Open Search در ASP.NET MVC
- Best Practice ی برای تأیید اعتبار کردن کاربران در ASP.NET MVC 4
- هدایت درخواست فایلهای استاتیک در ASP.NET MVC به یک کنترلر
- ModelBinder سفارشی در ASP.NET MVC
- ایجاد لینک با یک تصویر بوسیله Html Helper
- بارگزاری PartialView با استفاده از jQuery در زمان اجرا
- یافتن اکشن متدهای به اشتباه کش شده در ASP.NET MVC
- مروری مقدماتی بر ساخت برنامههای موبایل در MVC4
- اجرای برنامههای ASP.NET توسط Mono در Ubuntu
- اجرای برنامههای ASP.NET به کمک وب سرور Apache توسط Mono در Ubuntu
- فعالسازی استفاده از Session در ASP.NET MVC 4 API Controller ها
- ساخت منوهای چند سطحی در ASP.NET MVC
- طراحی ValidationAttribute دلخواه و هماهنگ سازی آن با ASP.NET MVC
- بهینه سازی برنامههای وب ASP.NET برای موتورهای جستجو (SEO)
- CheckBoxList برای فیلد Enum Flags مدل در ASP.Net MVC
- چطور مسیریابیهای ASP.NET MVC را دیباگ کنیم؟
- ذخیره TreeView ساخته شده توسط KendoUI در Asp.net MVC
- تنظیمات امنیتی Glimpse
- سفارشی سازی Binding یک خصوصیت از طریق Attributes
- Bundle کردن فایلهای LESS در MVC
- TwitterBootstrapMVC
- بررسی خطای Circular References در ASP.NET MVC Json Serialization
- ایجاد یک فیلتر سفارشی جهت تعیین Layout برای کنترلر و یا اکشن متد
- حذف فضاهای خالی در خروجی صفحات ASP.NET MVC
- جلوگیری از درج صفحات سایت در سایتی دیگر از طریق iframeها
- مشکل اعتبار سنجی jQuery validator در Bootstrap tabs
- افزودن هدرهای Content Security Policy به برنامههای ASP.NET
- امکان اعتبارسنجی با تاخیر در ASP.NET 4.5
- معرفی ASP.NET Identity
- متدهای احراز هویت در VS 2013
- توسعه اپلیکیشنهای ASP.NET با Windows Azure Active Directory
- ساخت یک اپلیکیشن ساده ToDo با ASP.NET Identity
- دریافت اطلاعات بیشتر از Social Providerها در VS 2013
- معرفی کتابخانه Postal برای ASP.NET MVC
- استفاده از Web Fonts در اپلیکیشنهای ASP.NET MVC
- استفاده از Awesomium.NET در برنامههای وب
- خواندن اطلاعات از سرور و نمایش آن توسط Angular در ASP.NET MVC
- آموزش Backload (آپلود چندین فایل به طور همزمان با آجاکس )
- یافتن اکشن متدهای Post ایی در ASP.NET MVC که فیلتر CSRF ندارند
- ایجاد سیستم وضعیت آب و هوا مانند گوگل (بخش اول)
- استفاده از #F در پروژههای MVC4
- توسعه کنترلر و مدل در F# MVC4
- تعامل با پایگاه داده با استفاده از EntityFramework در پروژههای F# MVC 4
- انجام کارهای زمانبندی شده در برنامههای ASP.NET توسط DNT Scheduler
- بررسی خروجی IsAjaxRequest در درخواستهای http$ توسط AngularJS
- بارگذاری فایلهای ایستا از پوشهی Views در ASP.NET MVC
- هدایت خودکار آدرسهای یافت نشد در یک سایت ASP.NET MVC به جستجوی سایت
- راههای متفاوت رندر لایهها در ASP.NET MVC
- پروژه Microsoft.AspNet.Mvc.Futures و تولید مسیرهای Strongly typed
- ASP.NET MVC و Identity 2.0 : مفاهیم پایه
- ارسال PingBack در ASP.NET
- Identity 2.0 : تایید حسابهای کاربری و احراز هویت دو مرحله ای
- مدیریت درخواستهای شرطی در ASP.NET MVC
- استفاده از Froala WYSIWYG Editor در ASP.NET
- استفاده از نگارش سوم Google Analytics API در سرویسهای ویندوز یا برنامههای وب
- بهینه سازی فایلهای js و css در برنامههای ASP.NET با استفاده از Combres - قسمت اول
- استفاده از pjax بجای ajax در ASP.NET MVC
- استفاده از افزونهی jsTree در ASP.NET MVC
- تفاوت ViewData و ViewBag و TempData و Session در MVC
- استفاده از چند فرم در کنار هم در ASP.NET MVC
- انجام کارهای پس زمینه در ASP.NET 4.5.2
- نمایش اخطارها و پیامهای بوت استرپ به کمک TempData در ASP.NET MVC
- صفحه بندی و مرتب سازی خودکار اطلاعات به کمک jqGrid در ASP.NET MVC
- فرمت کردن اطلاعات نمایش داده شده به کمک jqGrid در ASP.NET MVC
- فعال سازی و پردازش جستجوی پویای jqGrid در ASP.NET MVC
- استفاده از چند Routing در یک پروژه ASP.NET MVC بدون درد و خونریزی
- فعال سازی و پردازش صفحات پویای افزودن، ویرایش و حذف رکوردهای jqGrid در ASP.NET MVC
- رمزنگاری خودکار فیلدهای مخفی در ASP.NET MVC
- استفاده ازExpressionها جهت ایجاد Strongly typed view در ASP.NET MVC
- سفارشی سازی عناصر صفحات پویای افزودن و ویرایش رکوردهای jqGrid در ASP.NET MVC
- تهیه خروجی PDF و اکسل از حاصل جستجوی پویای jqGrid به کمک PDF Report
- Ajax.BeginForm و ارسال فایل به سرور در ASP.NET MVC
- آپلود فایل توسط فرمهای پویای jqGrid
- اختصاصی کردن Razor برای #C در MVC با استفاده از Extension Method
- روشی سریع برای ایجاد RSS و Sitemap در ASP.NET MVC
- اعتبارسنجی سفارشی سمت کاربر و سمت سرور در jqGrid
- OutputCache در ASP.NET MVC
- فعال سازی و پردازش Inline Add در jqGrid
- بهینه سازی سرعت یافت ویوها با سفارشی سازی Lookup Caching در Razor View Engine
- گروه بندی اطلاعات در jqGrid
- نمایش Subgrid در jqGrid
- ایجاد زیر گریدهای چند سطحی در jqGrid
- نمایش ساختارهای درختی توسط jqGrid
- سازگارسازی کلاسهای اعتبارسنجی Twitter Bootstrap 3 با فرمهای ASP.NET MVC
- اعتبارسنجی در فرمهای ASP.NET MVC با Remote Validation
- قالبهای سفارشی برای HtmlHelperها
- ارسال ویدیو بصورت Async توسط Web Api
- اعتبار سنجی سمت کاربر wysiwyg-editorها در ASP.NET MVC
- بررسی مقدمات کتابخانهی JSON.NET
- تنظیمات و نکات کاربردی کتابخانهی JSON.NET
- استفاده از JSON.NET در ASP.NET MVC
- LINQ to JSON به کمک JSON.NET
- آشنایی با چالشهای امنیتی در توسعه برنامههای تحت وب، بخش اول
- نمایش بلادرنگ اعلامی به تمام کاربران در هنگام درج یک رکورد جدید
- پیاده سازی Template تو در تو در AngularJS و ASP.NET MVC
- یکپارچه سازی سیستم اعتبارسنجی ASP.NET MVC با Kendo UI validator
- ساخت یک Form Generator ساده در MVC
- آشنایی با WebDav و نحوه استفاده از آن
- قابلیت Templated Razor Delegate
- اعمال تزریق وابستگیها به مثال رسمی ASP.NET Identity
- ثبت جزئیات استثناهای Entity framework توسط ELMAH
- نمایش بلادرنگ اعلامی به تمام کاربران در هنگام درج یک رکورد جدید به صورت notification
- کار با وب سرویس جاوایی تشخیص ایمیلهای موقتی در دات نت
- فراخوانی متدهای Controllerها در Viewهای ASP.NET MVC
- لغو اجرای یک اکشن فیلتر برای یک اکشن خاص در MVC
- کار با اسکنر در برنامههای تحت وب (قسمت اول)
- کار با اسکنر در برنامههای تحت وب (قسمت دوم و آخر)
- تبدیل یک View به رشته و بازگشت آن به همراه نتایج JSON حاصل از یک عملیات Ajax ایی در ASP.NET MVC
- آشنایی با ساختار ViewBag
- مدیریت سشنها در برنامههای وب به کمک تزریق وابستگیها
- خلاصهای از روشهای ارسال دادههای سمت سرور به کدهای جاوا اسکریپتی در ASP.NET MVC
- یکدست کردن "ی" و "ک" در ASP.NET MVC با پیادهسازی یک Model Binder
- حذف پردازش درخواستهای فایلهای استاتیک در متد Application_AuthenticateRequest
- دریافت خطاهای موجود در Viewهای ASP.NET MVC در زمان کامپایل
- پیاده سازی یک متد الحاقی برای تبدیل آدرس فیزیکی به آدرس مجازی (آدرس سرور)
- استفاده از Razor در فایلهای JavaScript و CSS
- عمومی سازی الگوریتمها با استفاده از Reflection
در نسخه ۲.۱.۰ ، باشگاه مشتریان بانک ملت نیز افزوده شده.
جهت استفاده کافیست در هنگام درخواست پرداخت، حسابهایی که باید مبلغی به آنها واریز شود را مشخص نمایید.
مثال:
var result = _onlinePayment.Request(invoice => { invoice // سایر مشخصات صورت حساب .SetAmount(50000) .AddMellatCumulativeAccount(subServiceId: 330, amount: 20000, payerId: 22) .AddMellatCumulativeAccount(subServiceId: 333, amount: 30000); });
- SubServiceId : کد شناسه حساب واریزی
- Amount : مبلغی که باید برای حساب مورد نظر ریخته شود
- PayerId : شناسه پرداخت (در صورت نداشتن این مورد، میتوانید از متد overload آن استفاده کنید)
نکته ۱: حسابهایی که قصد واریز به آنها را دارید باید از قبل در هنگام عقد قرار داد با بانک، ارائه شده باشند. در غیر اینصورت امکان استفاده از این سرویس را ندارید.
نکته ۲: جمع مبلغهای تقسیم شده بین حسابها، باید معادل مبلغ کل صورتحساب باشد.
نکته ۳: نیازی به ذکر درگاه ملت توسط متد UseGateway نیست. این کار به صورت خودکار انجام میشود.
یک نکتهی تکمیلی: بهبود جزئی آرگومانهای نامدار در C# 7.2
تا پیش از C# 7.2، آرگومانهای نامدار، تنها پس از ذکر آرگومانهای بدون نام، مجاز بودند. برای مثال اگر امضای متدی به صورت زیر باشد:
فراخوانی آن به صورت زیر تا C# 7.2 مجاز نبود:
و باخطای کامپایلر زیر، کامپایل نمیشد:
این محدودیت در C# 7.2 برطرف شدهاست؛ به این شرط که موقعیت پارامترها تغییری نکنند و پارامترها دقیقا در همانجایی که قرار است باشند، معرفی شوند.
در این حالت تمام فراخوانیهای ذیل در C# 7.2 مجاز هستند:
تا پیش از C# 7.2، آرگومانهای نامدار، تنها پس از ذکر آرگومانهای بدون نام، مجاز بودند. برای مثال اگر امضای متدی به صورت زیر باشد:
public static void Write(int age, string name, string homeTown)
Write(age: 20, "User 1", homeTown: "Tehran");
Named argument specifications must appear after all fixed arguments have been specified.
در این حالت تمام فراخوانیهای ذیل در C# 7.2 مجاز هستند:
Write(age: 20, name: "User 1", "T1"); Write(age: 21, "User 2", homeTown: "T2"); Write(age: 22, "User 3", "T3"); Write(23, name: "User 4", "T4");
نظرات مطالب
Url Routing در ASP.Net WebForms
با سلام؛
وسایتم خوب کار میکنه فقط وقتی این قسمت که به جای فضای خالی _ بزار رو گزاشتم مشکل پیدا کردم چطور درستش کنم.
این خطهای اضافی دنباله خبر ماله چیه که درست شده اخه من برای درج خبر
کاراکتر اضافی وارد نکردم که؟کلا چرا بعد از خبر هام این قدر--------
میزاره
<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# Eval("NewsID", "ShowNews.aspx?id={0}")+ Eval("NewsTitle","&_title={0}").ToString().Replace(" ","_")%>'
http://localhost:28625/ShowNews.aspx?id=25&_title=%D8%A2%D8%AE%D8%B1%DB%8C%D9%86_%D8%AA%D8%B5%D8%A7%D9%88%DB%8C%D8%B1_%D8%A7%D8%B2_%22%D9%85%D8%B1%D8%AA%D8%B6%DB%8C_%D9%BE%D8%A7%D8%B4%D8%A7%DB%8C%DB%8C%22__________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
اشتراکها
سری آموزشی MCSA 2022
نوع داده(Data Type) ، متغیرها(Variables) ، انواع مقداری(Value Type) ، انواع ارجاعی(Reference Type)
مقدمه :
نوع دادهها، اجزای اصلی سازندهی یک زبان برنامه نویسی و شبیه قواعد هر زبانی هستند.
مفاهیمی که در این مطلب بررسی خواهد شد :
• Data Type نوع داده
• Variables متغیرها
• Naming Convention قراردادهای نامگذاری
• Value Type/Reference Type انواع مقداری و ارجاعی
• Stack/heap memory حافظه پشته و هرم
نوع داده
متغیرها
خروجی کدهای بالا :
نکته : متد sizeof فقط برای نمایش اندازهی نوع دادههای مقداری (value type) میتواند مورد استفاده قرار گیرد.
چک کردن نوع داده
ما میتوانیم نوع دادهها را برای بدست آوردن کلاسی که به آن تعلق دارند، چک کنیم.
مثال :
خروجی کدهای بالا :
چک کردن نوع دادهی دو شیء
فرض کنید 2 شیء را با نامهای obj1 و obj2 داریم که هر دو از نوع long هستند. برای اینکه این مقایسه را انجام دهیم، از متد Object.RefrenceEqual میتوان استفاده کرد.
مثال :
خروجی کدهای بالا :
تعریف یک متغیر ومقدار دهی به آن
برای استفاده از یک متغیر ابتداباید آن را تعریف کنیم :
مقداردهی اولیه یک متغیر
مقدار دهی اولیهی یک متغیر با استفاده از عملگر = و نوشتن مقدار مورد نظر برای ذخیره کردن در متغیر، در سمت راست عملگر اتفاق خواهد افتاد.
قرار دادهای نام گذاری متغیرها :
در دنیای برنامه نویسی دو نوع قرار داد نام گذاری بسیار متداول وجود دارند:
1- camelCase : در این قرار داد، حرف اول کلمهی اول، بصورت کوچک و حرف اول از کلمهی دوم، بصورت بزرگ نوشته خواهد شد. برای مثال: firstName,lastName
2- PascalCase : در این قرار داد حروف ابتدایی دو کلمهی مجاور، بصورت بزرگ نوشته خواهند شد: FirstName,LastName
چند نکته :
• نامگذاری متغیرها را میتوانید با علامت _ و یا @ شروع کنید.
• کلمات کلیدی (key word) سی شارپ نمیتوانند به عنوان نام متغیر مورد استفاده قرار بگیرند (مگر آنکه با @ شروع شوند).
• در بین نام متغیر نباید فضای خالی وجود داشته باشد. کاراکترهای سازندهی متغیر میتوانند اعداد، حروف و زیر خط باشند.
لیستی از نام گذاریهای مجاز:
لیستی از نام گذاریهای غیر مجاز
برای مطالعهی کاملتر کلمات کلیدی سی شارپ میتوانید اینجا را مطالعه کنید.
در ادامه کمی در مورد نوع دادهها بحث خواهیم کرد.
در سی شارپ دو مدل نوع داده وجود دارد:
• انواع مقداری Value Type
• انواع ارجاعی یا اشارهای Reference Type
انواع مقداری (Value Type) :
• انواع مقداری مستقیما حاوی دادهها هستند. اگر یک متغیر از نوع مقداری را به یک متغیر دیگر تخصیص دهید، مقدار آنها مستقیما کپی میشوند؛ برعکس نوعهای اشارهای که با نخصیص یک متغیر به یک متغیر دیگر، تنها اشارهگر به مقدار شیء کپی خواهد شد و نه خود شیء.
• کلیه نوعهای مقداری از کلاس ValueType مشتق شدهاند.
• در فضای stack به آنها حافظه تخصیص داده میشود.
• نمیتوانند مقدار null بپذیرند. البته با قابلیت nullabletype امکان تخصیص مقدار null به نوع دادههای مقداری نیز مهیا شده است.
• همه نوعهای دادههای مقداری، یک سازنده پیش فرض دارند که به صورت ضمنی کار مقدار دهی اولیه برای آنها را انجام میدهد. برای مطالعه بیشتر درباره مقادیر پیش فرض به اینجا مراجعه کنید.
انواع مقداری به دو دستهی اصلی تقسیم میشود :
• Structs
• Enumerations
طبقه بندی Structs به صورت زیر است :
• Numeric Type
* Integral Type : sbyte,short,ushort,int,uint,long,ulong,char
* Floating-Point Types : float,double
* Decimal : decimal
• Bool دو مقدار true و false
• User Defined Struct
نوع داده نال (تهی) پذیر (nullable Type) و چگونگی تعریف آن
نکته : var نمیتواند بصورت nullable تعریف شود.
برای چک کردن مقدار در انواع تهی پذیر (nullable) دو خصوصیت وجود دارد:
• HasValue
اگر مقداری در متغیر وجود داشته باشد ارزش true بازگردانده میشود؛ در غیر اینصورت ارزش false
• Value
مقدار واقعی متغیر را باز میگرداند.
مثال :
خروجی کد بالا :
انواع ارجاعی Reference Type
انواع ارجاعی مستقیما حاوی اطلاعات نیستند و ارجاعی هستند به آدرسی از حافظه که حاوی اطلاعات واقعی است. به بیانی دیگر، اشارهگری به آدرسی از حافظه هستند.
• انواع ارجاعی بصورت غیر مستقیم حاوی دادهها هستند.
• در بخشی از حافظه که به آن heap میگوییم، به آنها فضا اختصاص داده میشود.
• میتوانند بصورت null (بدون مقدار) باشند.
انواع ارجاعی نیز به دو دستهی کلی تقسیم میشوند :
• انواع از پیش تعریف شده
Object,string,dynamic
• انواع تعریف شده توسط کاربر
class,interface,delegate
نکته : آدرس مکانی از حافظه که دادهها در آن قرار دارند، در بخش پشته یا Stack ذخیره میشود و دادهها در فضای heap ذخیره میشوند.
مثال :
نکته : دو متغیر از نوع ارجاعی میتوانند به یک آدرس از حافظه اشاره کنند. در شکل زیر این موضوع نشان داده شده است.
در شکل زیر طبقه بندی نوع دادهها در سی شارپ نشان داده شده است :
وقتی از یک متغیر مقداری را به یک متغیر دیگر تخصیص میدهیم، یک کپی جدید از آن در فضای stack ایجاد میشود. بدین معنی که محتوای دو متغیر یکسان هستند، ولی در دو بخش مجزای در حافظهی Stack قرار دارند. به همین خاطر تغییر محتوای یک متغیر، محتوای متغیر دیگر را تغییر نمیدهد.
مثال :
دیاگرام حافظه کد بالا :
• عملیات کپی، در نوع دادهی ارجاعی
دیاگرام حافظهی قطعه کد بالا به شکل زیر است :
تخصیص حافظه در بخش Stack و Heap به متغیرها
سیستم عامل و net CLR. حافظه را به دو بخش stack و heap تقسیم بندی میکنند.
مقدمه :
نوع دادهها، اجزای اصلی سازندهی یک زبان برنامه نویسی و شبیه قواعد هر زبانی هستند.
مفاهیمی که در این مطلب بررسی خواهد شد :
• Data Type نوع داده
• Variables متغیرها
• Naming Convention قراردادهای نامگذاری
• Value Type/Reference Type انواع مقداری و ارجاعی
• Stack/heap memory حافظه پشته و هرم
نوع داده
در دنیای واقعی، برای نگهداری مواد مختلف، ظروف مختلفی با اندازههای مختلفی طراحی شده است. در دنیای برنامه نویسی، به تناسب اطلاعاتی که میخواهیم در حافظه ذخیره کنیم، باید نوع ظرف ذخیره سازی را انتخاب کنیم. نوع ظرف ذخیره سازی را در دنیای برنامه نویسی، نوع دادهها مشخص میکنند.
در دات نت، همهی نوع دادهها (Data Type) بصورت مستقیم و یا غیر مستقیم، از کلاس System.Object مشتق شدهاند.
متغیرها
متغیرها برای ذخیرهی مقادیر (اطلاعات)، استفاده میشوند. به این مثال دقت کنید: ما یک کیف داریم که در آن یک کتاب قرار دارد. در اینجا کیف نقش متغیر و کتاب نقش مقدار (value) را ایفا میکند. اندازهی کیف همان نوع داده (Data Type) در دنیای برنامه نویسی میباشد.
چک کردن سایز نوع داده (Data Type)
چک کردن سایز نوع داده (Data Type)
ما نیازی به حفظ کردن اندازهی نوع دادهها نداریم. در سی شارپ متدی به نام () sizeof مهیا شده است که با چک کردن نوع داده، اندازهی آن را بر حسب بایت نمایش میدهد.
به مثال زیر دقت کنید:Console.WriteLine(sizeof(int)); Console.WriteLine(sizeof(char)); Console.WriteLine(sizeof(bool)); Console.WriteLine(sizeof(decimal)); Console.WriteLine(sizeof(float));
4 2 1 16 4
نکته : متد sizeof فقط برای نمایش اندازهی نوع دادههای مقداری (value type) میتواند مورد استفاده قرار گیرد.
چک کردن نوع داده
ما میتوانیم نوع دادهها را برای بدست آوردن کلاسی که به آن تعلق دارند، چک کنیم.
مثال :
int a = 23; float b = 3.14f; Console.WriteLine(a.GetType()); Console.WriteLine(b.GetType());
System.Int32 System.Single
چک کردن نوع دادهی دو شیء
فرض کنید 2 شیء را با نامهای obj1 و obj2 داریم که هر دو از نوع long هستند. برای اینکه این مقایسه را انجام دهیم، از متد Object.RefrenceEqual میتوان استفاده کرد.
مثال :
long obj1 = 356; long obj2 = 54; float obj3 = 234; Console.WriteLine(object.ReferenceEquals(obj1.GetType(), obj2.GetType())); Console.WriteLine(object.ReferenceEquals(obj1.GetType(), obj3.GetType()));
True False
تعریف یک متغیر ومقدار دهی به آن
سی شارپ یک زبان strongly typed است (البته با در نظر نگرفتن نوع dynamic آن). به این معنا که کلیهی متغیرها، قبل از استفاده باید تعریف و مقدار دهی شوند و بعد از تعریف متغیر، نمیتوان نوع آن را تغییر داد. رفتار یک متغیر بر اساس نوع انتخابی ما مشخص میشود. بطور مثال با انتخاب نوع int تنها میتوان اعداد صحیح را ذخیره و نگهداری کرد و برای تغییر رفتار متغیرها باید آنها را تبدیل کنیم.
تعریف یک متغیر برای استفاده از یک متغیر ابتداباید آن را تعریف کنیم :
//<data type> <variable name>; Int a;
مقداردهی اولیه یک متغیر
مقدار دهی اولیهی یک متغیر با استفاده از عملگر = و نوشتن مقدار مورد نظر برای ذخیره کردن در متغیر، در سمت راست عملگر اتفاق خواهد افتاد.
//<data type> <variable name>=value; Int a=23; Int a;//declare تعریف a=23;//مقدار دهی اولیه initializing Int a=23;//تعریف و مقدار دهی در یک خط Int a,b,c=23;//تعریف چند متغیر و مقدار دهی در یک خط
قرار دادهای نام گذاری متغیرها :
در دنیای برنامه نویسی دو نوع قرار داد نام گذاری بسیار متداول وجود دارند:
1- camelCase : در این قرار داد، حرف اول کلمهی اول، بصورت کوچک و حرف اول از کلمهی دوم، بصورت بزرگ نوشته خواهد شد. برای مثال: firstName,lastName
2- PascalCase : در این قرار داد حروف ابتدایی دو کلمهی مجاور، بصورت بزرگ نوشته خواهند شد: FirstName,LastName
چند نکته :
• نامگذاری متغیرها را میتوانید با علامت _ و یا @ شروع کنید.
• کلمات کلیدی (key word) سی شارپ نمیتوانند به عنوان نام متغیر مورد استفاده قرار بگیرند (مگر آنکه با @ شروع شوند).
• در بین نام متغیر نباید فضای خالی وجود داشته باشد. کاراکترهای سازندهی متغیر میتوانند اعداد، حروف و زیر خط باشند.
لیستی از نام گذاریهای مجاز:
int abc; long _abcd; float @abcd; bool main_button; decimal piValue; string firstName; string first_name; bool button55_on;
long _a.5bc5d; float @ab cd; decimal pi@Value; //استفاده از کلمات کلیدی سی شارپ که کامپایلر آنها را مجاز نمیداند bool class; string namespace; string string; int static;
در ادامه کمی در مورد نوع دادهها بحث خواهیم کرد.
در سی شارپ دو مدل نوع داده وجود دارد:
• انواع مقداری Value Type
• انواع ارجاعی یا اشارهای Reference Type
انواع مقداری (Value Type) :
• انواع مقداری مستقیما حاوی دادهها هستند. اگر یک متغیر از نوع مقداری را به یک متغیر دیگر تخصیص دهید، مقدار آنها مستقیما کپی میشوند؛ برعکس نوعهای اشارهای که با نخصیص یک متغیر به یک متغیر دیگر، تنها اشارهگر به مقدار شیء کپی خواهد شد و نه خود شیء.
• کلیه نوعهای مقداری از کلاس ValueType مشتق شدهاند.
• در فضای stack به آنها حافظه تخصیص داده میشود.
• نمیتوانند مقدار null بپذیرند. البته با قابلیت nullabletype امکان تخصیص مقدار null به نوع دادههای مقداری نیز مهیا شده است.
• همه نوعهای دادههای مقداری، یک سازنده پیش فرض دارند که به صورت ضمنی کار مقدار دهی اولیه برای آنها را انجام میدهد. برای مطالعه بیشتر درباره مقادیر پیش فرض به اینجا مراجعه کنید.
انواع مقداری به دو دستهی اصلی تقسیم میشود :
• Structs
• Enumerations
طبقه بندی Structs به صورت زیر است :
• Numeric Type
* Integral Type : sbyte,short,ushort,int,uint,long,ulong,char
* Floating-Point Types : float,double
* Decimal : decimal
• Bool دو مقدار true و false
• User Defined Struct
نوع داده نال (تهی) پذیر (nullable Type) و چگونگی تعریف آن
در ابتدای معرفی نوع دادههای مقداری گفتیم همیشه باید وضعیت متغیر مشخص و مقدار دهی اولیهی آن یا به صورت ضمنی و یا آشکار انجام شود. هیچ یک از نوع دادههای مقداری نمیتوانند بصورت null تعریف شوند. برای تبدیل یک نوع داده مقداری به صورتی که قابلیت ذخیرهی مقدار null را داشته باشد، بعد از نوشتن نوع داده، علامت سوال ؟ قرار میدهیم.
< data type >? < variable name >= null; //syntax
int? a = null; //assigning null int? b = 55; //assigning null and a value var? c = 55 //it will give error
نکته : var نمیتواند بصورت nullable تعریف شود.
برای چک کردن مقدار در انواع تهی پذیر (nullable) دو خصوصیت وجود دارد:
• HasValue
اگر مقداری در متغیر وجود داشته باشد ارزش true بازگردانده میشود؛ در غیر اینصورت ارزش false
• Value
مقدار واقعی متغیر را باز میگرداند.
مثال :
int? a = null; int? b = 22; Console.WriteLine(a.HasValue); //------------ Console.WriteLine(b.HasValue); Console.WriteLine(b.Value);
False True 22
انواع ارجاعی Reference Type
انواع ارجاعی مستقیما حاوی اطلاعات نیستند و ارجاعی هستند به آدرسی از حافظه که حاوی اطلاعات واقعی است. به بیانی دیگر، اشارهگری به آدرسی از حافظه هستند.
• انواع ارجاعی بصورت غیر مستقیم حاوی دادهها هستند.
• در بخشی از حافظه که به آن heap میگوییم، به آنها فضا اختصاص داده میشود.
• میتوانند بصورت null (بدون مقدار) باشند.
انواع ارجاعی نیز به دو دستهی کلی تقسیم میشوند :
• انواع از پیش تعریف شده
Object,string,dynamic
• انواع تعریف شده توسط کاربر
class,interface,delegate
نکته : آدرس مکانی از حافظه که دادهها در آن قرار دارند، در بخش پشته یا Stack ذخیره میشود و دادهها در فضای heap ذخیره میشوند.
مثال :
test obj; //allocating reference on stack obj= new test(55);//allocating object on heap
نکته : دو متغیر از نوع ارجاعی میتوانند به یک آدرس از حافظه اشاره کنند. در شکل زیر این موضوع نشان داده شده است.
در شکل زیر طبقه بندی نوع دادهها در سی شارپ نشان داده شده است :
وقتی از یک متغیر مقداری را به یک متغیر دیگر تخصیص میدهیم، یک کپی جدید از آن در فضای stack ایجاد میشود. بدین معنی که محتوای دو متغیر یکسان هستند، ولی در دو بخش مجزای در حافظهی Stack قرار دارند. به همین خاطر تغییر محتوای یک متغیر، محتوای متغیر دیگر را تغییر نمیدهد.
مثال :
int a = 55;//declare a and initialize int copya = a;//copya contains the copy of value a
• عملیات کپی، در نوع دادهی ارجاعی
وقتی یک متغیر از نوع ارجاعی را به یک متغیر دیگر تخصیص میدهیم، دو اشارهگر در فضای Stack ایجاد میشود که به یک مقدار واحد در حافظهی heap اشاره میکنند. آدرسهای ذخیره شدهی در stack یکسان هستند.
مثال : در اینجا فرض بر این است کهtest یک کلاس تعریف شدهی توسط کاربر میباشد.test obj; obj=new test(23); test objCopy; objCopy = obj;
دیاگرام حافظهی قطعه کد بالا به شکل زیر است :
تخصیص حافظه در بخش Stack و Heap به متغیرها
سیستم عامل و net CLR. حافظه را به دو بخش stack و heap تقسیم بندی میکنند.
زمانی که یک متد را فراخوانی میکنیم، در بخش پشته به پارامترهای متد فضا تخصیص داده میشود و بعد از پایان کار متد، فضای اشغال شدهی بوسیله GC یا همان Garbage collection آزاد میشود.
تخصیص حافظه در Stack بر اساس قانون LIFO انجام و به ترتیب و پشت سر هم، حافظه تخصیص داده میشود. دیاگرام تخصیص حافظه به stack:
تخصیص حافظه در Heap بصورت تصادفی است؛ بر عکس پشته (stack) که به ترتیب و متوالی انجام میشد. انواع ارجاعی در Stack ذخیره میشوند؛ ولی دادهی واقعی در heap قرار میگیرد.
حافظههای پویا در بخش heap و حافظههای استاتیک در بخش stack تخصیص داده میشوند.
اشتراکها
23.Visual Studio 2017 15.9 منتشر شد
Issues Fixed in 15.9.23
- Fixed C++ compiler bug for proper folding of inline variable dynamic initializers. Ported from the VS 2019 16.0 release.
- Security improvements in vctip.exe.
- A change to enable Enterprise IT administrators and deployment engineers to configure tools like Microsoft Update client & SCCM to determine applicability of VS2017 updates hosted on Microsoft Update Catalog & WSUS.
Security Advisory Notices
اشتراکها
NET 5.0.5. منتشر شد
Today, we are releasing the .NET April 2021 Updates. These updates contains reliability and other non-security improvements. See the individual release notes for details on updated packages.
You can download 5.0.5 versions for Windows, macOS, and Linux, for x86, x64, Arm32, and Arm64.
- Installers and binaries: 5.0.5
- Release notes: 5.0.5
- Container images
- Linux packages: 5.0.5
- Release feedback/issues
- Known issues: 5.0