C# 二十五、匿名类型与对象初始化器(附带:类初始化器)

  • 匿名类型提供了一种方便的方法,可用来将一组只读属性封装到单个对象中,而无需首先显式定义一个类型。
  • 类型名由编译器生成,并且不能在源代码级使用。
  • 每个属性的类型由编译器推断。
  • 可通过使用new运算符和对象初始值创建匿名类型。
  • 匿名类型包含一个或多个公共只读属性。
  • 包含其他种类的类成员(如方法或事件)为无效。
  • 用来初始化属性的表达式不能为 null、匿名函数或指针类型。
  • 通常,当使用匿名类型来初始化变量时,可以通过使用var将变量作为隐式键入的本地变量来进行声明。
  • 匿名类型是直接从对象派生的类类型,并且其无法强制转换为除对象外的任意类型。
var v = new { theName = "jpf", theAge = 24, theSex='M' };

Console.WriteLine("姓名:{0},年龄:{1},性别:{2}。",v.theName,v.theAge,v.theSex);

--->
姓名:jpf,年龄:24,性别:M。

  • 可通过将隐式键入的本地变量与隐式键入的数组相结合创建匿名键入的元素的数组。
var arr = new[]{ new { theName = "jpfa", theAge = 24 }, new { theName = "jpfb", theAge = 25 } };

foreach (var item in arr)
{
    Console.WriteLine(item);
}

--->
{ theName = jpfa, theAge = 24 }
{ theName = jpfb, theAge = 25 }

官方文档:

 https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/classes-and-structs/anonymous-types

 

类初始化器

    class Game
    {
        private string _theName;
        public string TheName
        {
            get { return _theName; }
            set { _theName = value; }
        }

        private char _theSex;
        public char TheSex
        {
            get { return _theSex; }
            set { _theSex = value; }
        }

        private int _theAge;
        public int TheAge
        {
            get { return _theAge; }
            set { _theAge = value; }
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Game game = new Game() { TheName = "jpf", TheAge = 24, TheSex = 'M' };

            Console.WriteLine("姓名:{0},年龄:{1},性别:{2}。", game.TheName, game.TheAge, game.TheSex);

            Console.ReadKey();
        }
    }

--->
姓名:jpf,年龄:24,性别:M。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值