معرفی تغییرات جدید سی شارپ

پنج شنبه ۱۰ تیر ۱۴۰۰

90

10

معرفی تغییرات جدید سی شارپ

معرفی تغییرات جدید سی شارپ

 

 

 

در این مقاله ، من قصد دارم ویژگی فقط تنظیم کننده Init را که در C # 9.0 معرفی شده است توضیح دهم.

 

 

 

هر نسخه C # ویژگی های خاص خود را دارد. در C # 9.0 ، بسیاری از ویژگی های شگفت انگیز جدید اضافه شده است و در اینجا قصد داریم ویژگی مهم ویژگی فقط تنظیم کننده را آغاز کنیم.

 

قبل از شروع ، باید درک اساسی از تغییر ناپذیر و قابل تغییر در #C داشته باشیم.

 

 

 

معنای Mutable و Immutable در انگلیسی چیست؟

 

 

 

پاسخ ها عبارتند از:

 

قابل تغییر - می تواند تغییر کند

 

غیرقابل تغییر - تغییر نمی کند

 

به زبان ساده می توان گفت ، معنی تغییرناپذیر پس از ایجاد شی cannot قابل تغییر نیست. اگر می خواهید تغییر کنید ، باید شی جدید ایجاد کنید / حافظه جدید اختصاص دهید. نمونه ای از نوع غیر قابل تغییر رشته در C # است.

 

 

 

خاصیت تنظیم کننده Init-only چیست؟

 

 

 

قبل از این که با ویژگی Only-only شروع کنیم ، باید روش کار سنتی (خواص) را درک کنیم.

 

 

 

بیایید با یک مثال شروع کنیم ،

 

 

 

فرض کنید ، ما کلاس Member داریم که دارای 3 ویژگی است ،

 

شناسه - شناسه منحصر به فرد عضو

 

نام - نام عضو

 

آدرس - آدرس اعضا

 

 

public class Member

{

    public int Id { get; set; }

    public string Name { get; set; }

    public string Address { get; set; }

}

اکنون یک کلاس از کلاس Member ایجاد کرده و مقادیری را اختصاص دهید ،

 

 

using System;

 

namespace C_9._0

{

    class Program

    {

        static void Main(string[] args)

        {

            Member memberObj = new Member();

            memberObj.Id= 1;

            memberObj.Name="Kirtesh Shah";

            memberObj.Address="Vadodara";

 

            Console.WriteLine("****************START - Member Details***********");

 

            Console.WriteLine("ID : -" + memberObj.Id);

            Console.WriteLine("Name :- " + memberObj.Name);

            Console.WriteLine("Address:- " + memberObj.Address);

            Console.ReadLine();

 

            Console.WriteLine("****************END - Member Details***********");

        }

    }

}

همه خوب به نظر می رسند؟ اما اگر شخصی شناسه عضو را تغییر دهد چه اتفاقی می افتد؟ شناسه منحصر به فرد است و نباید قابل ویرایش باشد ، به این معنی که باید غیرقابل تغییر باشد ، قابل تغییر نباشد. این مسئله با روش سنتی است ، خواص قابل تغییر هستند.

 

 

 

اگر بخواهیم خصوصیات را به روش سنتی تغییرناپذیر کنیم ، باید مقادیر مانند کد زیر را در سازنده منتقل کنیم 

 

 

public class Member

{

    public Member(int memberId)

    {

        Id = memberId;

    }

    public int Id { get; }

    public string Name { get; set; }

    public string Address { get; set; }

}

ویژگی ID اکنون تغییرناپذیر است.

 

 

 

بیایید کد زیر را مشاهده کنیم:

 

using System;

namespace C_9._0 {

    class Program {

        static void Main(string[] args) {

            Member memberObj = new Member(1);

            memberObj.Name = "Kirtesh Shah";

            memberObj.Address = "Vadodara";

            Console.WriteLine("****************START - Member Details***********");

            Console.WriteLine("ID : " + memberObj.Id);

            Console.WriteLine("Name : " + memberObj.Name);

            Console.WriteLine("Address: " + memberObj.Address);

            Console.ReadLine();

            Console.WriteLine("****************END - Member Details***********");

        }

    }

}

خروجی کد بالا خواهد بود ،

 

خروجی

 

اکنون ویژگی ID غیرقابل تغییر است و پس از ایجاد شی cannot نمی توان آن را تغییر داد. برای تبدیل اموال قابل تغییر به غیر قابل تغییر ، باید یک سازنده ایجاد کنیم.

 

 

 

در C # 9.0 ، با استفاده از خاصیت Init-only می توانیم به همان چیز برسیم.

 

public class Member {

    public int Id {

        get;

        init;

    } // set is replaced with init

    public string Name {

        get;

        set;

    }

    public string Address {

        get;

        set;

    }

}

 

using System;

namespace C_9._0 {

    class Program {

        static void Main(string[] args) {

            Member memberObj = new Member {

                Id = 1

            };

            memberObj.Name = "Kirtesh Shah";

            memberObj.Address = "Vadodara";

            Console.WriteLine("****************START - Member Details***********");

            Console.WriteLine("ID : " + memberObj.Id);

            Console.WriteLine("Name : " + memberObj.Name);

            Console.WriteLine("Address: " + memberObj.Address);

            Console.ReadLine();

            Console.WriteLine("****************END - Member Details***********");

        }

    }

}

همان خروجی کد قبلی را گرفتیم.

 

خروجی

 

این قدرت خاصیت Init-only است. اگر بخواهیم برخی از اعتبار سنجی ها را انجام دهیم مانند شناسه نباید پوچ یا رشته ای باشد ، چه کاری انجام خواهیم داد؟ خاصیت فقط اولیه این قابلیت را دارد که فقط خواندن را برای اجرای اعتبارسنجی تنظیم کند.

 

 

 

فرض کنید ما کلاس Member مانند زیر را داریم ،

 

public class Member

{

    public int Id { get; init; }

    public string Name { get; init; }

    public string Address { get; init; }

}

اکنون سعی خواهیم کرد که یک شی کلاس Member مانند زیر ایجاد کنیم ،

 

using System;

 

namespace C_9._0

{

    class Program

    {

        static void Main(string[] args)

        {

            Member memberObj = new Member

            {

                  Id =1

            };

            Console.WriteLine("****************START - Member Details***********");

 

            Console.WriteLine("ID : " + memberObj.Id);

            Console.WriteLine("Name : " + memberObj.Name);

            Console.WriteLine("Address: " + memberObj.Address);

            Console.ReadLine();

 

            Console.WriteLine("****************END - Member Details***********");

        }

    }

}

 

 

خصوصیات فقط اولیه را می توان طبق نیاز شما تنظیم کرد یا نمی توان تنظیم کرد. همانطور که در کد بالا مشاهده کردید ، فقط ویژگی ID تنظیم شده و مشخصات نام و آدرس تنظیم نشده است. لطفاً توجه داشته باشید که اگر در هنگام ایجاد شی object هیچ خاصیتی تنظیم نشده باشد ، آن ویژگی قابل تنظیم نیست.

 

 

 

امیدوارم از این مقاله لذت برده باشید. :)

 

 

بیایید کد زیر را مشاهده کنیم: