C#匿名类型的生成

有如下匿名类型代码

namespace ListNode
{
    public class Program
    {
        static void Main()
        {

            var patent1 =
                new
                {
                    Title = "Bifocals",
                    YearOfPublication = "1784"
                };
            var patent2 =
                new
                {
                    Title = "Phonograph",
                    YearOfPublication = "1877"
                };
            var patent3 =
                new
                {
                    patent1.Title,
                    // Renamed to show property naming
                    Year = patent1.YearOfPublication
                };

            Console.WriteLine(
                $"{ patent1.Title } ({ patent1.YearOfPublication })");
            Console.WriteLine(
                $"{ patent2.Title } ({ patent2.YearOfPublication })");


            Console.WriteLine();
            Console.WriteLine(patent1);
            Console.WriteLine(patent2);

            Console.WriteLine();
            Console.WriteLine(patent3);

        }
    }
}

输出
在这里插入图片描述
虽然Console.WriteLine()的实现是调用ToString(),但在上面的代码中,Console.WriteLine()的输出并不是默认的ToString(),相反,输出的是一对对PropertyName=value,匿名类型的每个属性都有一对这样的输出。之所以会这样,是因为编译器在生成匿名类型的代码时重写了ToString()方法,对输出进行了格式化,类似的生成的类型还重写了Equals()和GetHashCode()的实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值