在Visual Studio 2017(Debug build)中运行以下代码时,我有一些奇怪的行为:
using System;
using System.Collections.Generic;
namespace ConsoleApp2
{
public class Program
{
public static class DefaultCustomers
{
public static readonly Customer NiceCustomer = new Customer() { Name = "Mr. Nice Guy " };
public static readonly Customer EvilCustomer = new Customer() { Name = "Mr. Evil Guy " };
public static readonly Customer BrokeCustomer = new Customer() { Name = "Mr. Broke Guy" };
}
public class Customer
{
public static readonly IEnumerable<Customer> UnwantedCustomers = new[] { …Run Code Online (Sandbox Code Playgroud) 从C#7.1开始,default无需指定类型就可以通过使用获得默认值。我今天尝试了一下,发现可为空的结构和可为空的值类型的结果有些违反直觉。
[TestFixture]
public class Test
{
private class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
[Test]
public void ShouldBehaveAsExpected()
{
var person1 = new Person {Name = "John", Age = 58};
var person2 = new Person {Name = "Tina", Age = 27};
var persons = new[] {person1, person2};
int? myAge = persons.FirstOrDefault(p => p.Name == "MyName")?.Age;
var myDefaultAge = myAge ?? default;
var myAgeString = myAge == null …Run Code Online (Sandbox Code Playgroud)