با سلام خدمت شما دوستان برنامه نویس ، با یکی دیگر از جلسات آموزش ASP.NET Core در خدمت شما دوستان هستم در جلسه گذشته با کاربرد عملگر شرطی Null آشنا شدیم . در این جلسه آموزش طراحی سایت با ASP.NET قصد دارم تا شما را با نحوه استفاده از خاصیت های خودکار در کلاس ها آشنا کنم .
استفاده از خاصیت های خودکار در کلاس ها
در #C میتوان خاصیت ها را درون کلاس ها طوری تعریف کرد که نیازی به تعریف فیلد نداشته باشند. کامپایلر #C برای چنین خاصیت هایی (Automatic Implemented Properties) در ترجمه ی برنامه ، فیلدهایی درون حافظه ایجاد میکند . در جلسه گذشته ، هنگام ایجاد کلاس person ، از این روش در معرفی خاصیت های کلاس استفاده کردیم.
در کاربرد این ویژگی نیاز به استفاده از get و set نخواهد بود در این حالت ، تعریف خصوصیت به دو روش زیر باهم برابر هستند:
... public string Name {get;set;} ... ... public string Name{ get {return name;} set {name=value;} } ...
خاصیت های خودکار از نگارش 3.0 #C قابل استفاده بوده اند نگارش های اخیر #C ، امکان مقدار دهی آغازین این خصوصیت ها را نیز فراهم آورده است.
مقداردهی آغازین خصوصیت های خودکار در Product.cs
using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace LearnCSharp.Models { public class Product { public string Name { get; set; } public string Category { get; set; } = "Watesports"; public decimal? Price { get; set; } public bool InStock { get; } = true; public Product Related { get; set; } public static Product[] GetProducts() { Product Kayak = new Product { Name = "Kayak", Category = "Water Craft", Price = 275M }; Product lifejacket = new Product { Name = "Lifejacket", Price = 48.95M, }; Kayak.Related = lifejacket; return new Product[] { Kayak, lifejacket, null }; } } }
مقداردهی آغازین یک خاصیت خودکار ، موجب نمی شود که نتوانیم در آینده مقدار آن را تغییر دهیم نتیجه اصلی مقداری که در هنگام تعریف به خاصیت داده می شود آن است که مجبور به استفاده از سازنده ای برای تعیین مقدار پیش فرض خاصیت ها نباشیم. در کد بالا مقدار Watesports به خاصیت category نسبت داده شده است. با این حال در زمان ایجاد شی kayak ، این مقدار را به Water Craft تغییر داده ایم.
خاصیت های خودکار فقط خواندنی
حذف set از فرمان ایجاد خاصیت خودکاری که دارای مقداردهی آغازین است موجب ایجاد خاصیتی می شود که در آینده نمی توان مقدار آن را تغییر داد.
خاصیت InStock در هنگام ایجاد ، مقدار true را به خود گرفته ولی به دلیل این که سازنده ی آن دارای set نیست نمی توان مقدارآن را تغییر داد با این حال توجه کنید که تغییر مقدار خاصیتی فقط خواندنی ، در سازنده کلاس ، امکان پذیر است.
مقداردهی خاصیتی فقط خواندنی در سازنده کلاس Product.cs
using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace LearnCSharp.Models { public class Product { public Product(bool stock = true) { InStock = stock; } public string Name { get; set; } public string Category { get; set; } = "Watesports"; public decimal? Price { get; set; } public bool InStock { get; } = true; public Product Related { get; set; } public static Product[] GetProducts() { Product Kayak = new Product { Name = "Kayak", Category = "Water Craft", Price = 275M }; Product lifejacket = new Product { Name = "Lifejacket", Price = 48.95M, }; Kayak.Related = lifejacket; return new Product[] { Kayak, lifejacket, null }; } } }
سازنده ، مقداری را برای نسبت دادن به خاصیت به عنوان پارامتر ورودی میپذیرد. اگر مقداری وارد نشود، مقدار پیش فرض در نظر گرفته خواهد شد مقدار خاصیت ، پس از اجرای سازنده ، قابل تغییر نخواهد بود.
بسیار خب به پایان این جلسه آموزشی رسیدیم امیدوارم که این جلسه آموزش ASP.NET Core برای شما عزیزان مفید واقع بشه . در صورتی که سوالی داشتید حتما در قسمت نظرات مطرح کنید .
3 پاسخ
با تشکر از وقتی که برای آموزش میگذارید. مطالب شما رو پیگیری میکنم و بسیار ارزنده است. فقط در قسمت مقالات به نظرم نحوه نمایش کدها مرتب نیست و این خواندن آنها را سخت و یادگیری آنها را هم کند میکند
سلام
با تشکر از مطالب خوبتون
شما آموزش خصوصی asp core 2 دارید ؟
با سلام … در حال حاضر تا پایان سال 97 متاسفانه فرصتی برای تدریس خصوصی ندارم، پیشنهاد میکنم از دوره جامع ویدیویی که برگزار شده در سایت میزفا استفاده کنید … موفق باشید.