سؤال: آيا شما بدون مراجعه به مستندات شيء FormsAuthenticationTicket ميتوانيد پاسخ دهيد هر كدام از آرگومانهاي ذكر شده در سازندهي اين كلاس چه كاربرد و معنايي دارند؟
var ticket = new FormsAuthenticationTicket
(
1,
principal.Identity.Name,
DateTime.Now,
DateTime.Now.AddMinutes(30),
true,
string.Empty,
FormsAuthentication.FormsCookiePath
);
الان چطور؟!
//using named parameters of C# 4.0
var ticket = new FormsAuthenticationTicket
(
version: 1,
name: principal.Identity.Name,
issueDate: DateTime.Now,
expiration: DateTime.Now.AddMinutes(30),
isPersistent: true,
userData: string.Empty,
cookiePath: FormsAuthentication.FormsCookiePath
);
گاهي از اوقات ويژگيهايي كه به يك زبان برنامه نويسي اضافه ميشوند راه و روش برنامه نويسي را ممكن است كاملا تحت تاثير قرار دهند؛ براي مثال استفاده از Generics . اما گاهي از اوقات اين ويژگيهاي جديد syntax sugar يا nice to have هستند(!) مانند Named arguments .
Named arguments يا آرگومانهاي نامگذاري شده خوانايي كدهاي شما را با بيان اينكه هر آرگومان چه معنايي دارد، افزايش ميدهند. براي مثال به نظر شما كدام روش فراخواني متد Copy در ذيل خواناتر است؟
File.Copy("source.txt", "destination.txt", true);
File.Copy("source.txt", "destination.txt", overwrite: true);
نكات تكميلي:
متد ساده زير را در نظر بگيريد:
static void Foo(int x, int y) {}
Foo(1,2);
Foo(x:4, y:2);
Foo(y:2, x:4);
Foo(4, y:2);
Foo(x:4, 2); // Compile time error