int a = default(int);
var number = default(int); // 0 var date = default(DateTime); // DateTime.MinValue var obj = default(object); // null
int a = default; // 0 Guid guid = default; // 00000000-0000-0000-0000-000000000000
مثالهایی از default Literals در C# 7.1
C# 7.1 | C# 7.0 | |
int i = default; | int i = default(int); | Local Variable Defaults |
Person Create() => default; | Person Create() => default(Person); | Local function |
Person Create(string name, int age = default) | Person Create(string name, int age = default(int)) | Optional Parameter Default Value |
(string Name, int Age) person = ("User 1", default); | (string Name, int Age) person = ("User 1", default(int)); | Tuple Element Default Value |
Person p = new Person { Name = default, Age = default }; | Person p = new Person { Name = default(string), Age = default(int) }; | Object Initializer Default Value |
var people = new[] { new Person(), default, new Person() }; var ages = new[] {18, default, 50}; | var people = new[] { new Person(), default(Person), new Person() }; var ages = new[] {18, default(int), 50}; | Array Initializer Default Value |
int i = default; Console.WriteLine(i is default); | int i = default(int); Console.WriteLine(i is default(int)); // true | Is Operator |
// Local method returning a tuple (T, T) CreateTwo<T>() => (default, default); | // Local method returning a tuple (T, T) CreateTwo<T>() => (default(T), default(T)); | Generic Defaults |
bool IsAnswerKnown()=> false; int? p = IsAnswerKnown() ? 42 : default; | bool IsAnswerKnown()=> false; int? p = IsAnswerKnown() ? 42 : (int?)null; | Conditional Operator Defaults |
در این مثالها مفهوم type inference را بهتر میتوان مشاهده کرد. برای مثال در آرایهی ذیل چون اعضای آن int هست، مقدار default نیز به همان مقدار پیشفرض int اشاره میکند و همچنین نوع آرایه نیز int درنظر گرفته میشود و نیازی به ذکر آن نیست:
var ages = new[] {18, default, 50};
var ages = new[] { default };
نمونهی دیگر آن قطعه کد ذیل است:
string s = default; if(s == default) { }
و یا در مقایسهی ذیل 1.5 یک عدد double است. بنابراین default در اینجا به مقدار پیشفرض double و یا 0.0 اشاره میکند:
int a = default; var x = a > 0 ? default : 1.5;