With For Struct and anonymous types در سی شارپ 10
کلمه کلیدی With در سی شارپ 9 همراه با رکورد ها ارائه شد و کاربرد آن این است که ما می توانیم بر اساس Object های موجود یک Object جدید را ایجاد کنیم که میتواند property های آن متفاوت باشد .
با استفاده از این ویژگی کدهای کمتری می نویسیم و درنتیجه کدنویسی تمییزتری خواهیم داشت
در سی شارپ 10 این قابلیت به Struct و anonymous typesهم اضافه شد.
«with» در سیشارپ ۹ قابلیتی ویژهٔ رکوردهاست که به شما امکان میدهد از روی یک شیء، نسخهٔ جدیدی بسازید و فقط چند ویژگی را عوض کنید، بدون اینکه شیء اصلی تغییر کند. به این رویکرد «تغییرِ بدونِ تخریب» میگویند و برای مدلهای دادهٔ تغییرناپذیر بسیار کاربردی است؛ چون هم خوانایی کد را بالا میبرد، هم از خطاهای ناشی از دستکاری ناخواستهٔ داده جلوگیری میکند، و هم کار با سناریوهایی مثل «آبجکت قبلی بماند، اما فلان فیلد با مقدار تازه باشد» را ساده میسازد. توجه داشته باشید که این کار معمولاً یک کپی سطحی میسازد؛ یعنی اگر خصوصیتی خودش شیء پیچیدهای باشد، ممکن است لازم باشد راهبرد جداگانهای برای کپیِ عمیق در نظر بگیرید.