C#:匿名类型

0

当我们想要在代码中创建一个对象,需要用 new Object()  来创建,如果这个对象里面有一些 属性我们想要在 new 时就初始化,那么我们会重写 一个构造函数。

如果不想重写一个 构造函数 该如何做?

例子如下:

自定义一个类 Point.cs

    class Point
    {
        public int x;
        public int y;
        
        //public Point(int sx , int sy){
        //    x = sx;
        //    y = sy;
        //}

    }

如果不想写上面 带初始化x,y的构造函数该如何做?

我们只需在 使用 Point的地方,用下面的代码即可:

            Point p = new Point {
                x = 5 , 
                y = 5
            };
//或
            Point p1 = new Point {
                x = 5
            };
//或
            Point py = new Point {
                y = 5
            };

是不是很方便,你可以在使用Point的地方随意初始化任何一个属性,而不用写多个 构造函数。

1.

如果在代码中我们会经常调用一些 变量 的值,通常会 把它统一存在 一个类中,然后把该变量的属性设置为 static。但是我们可以创建一个匿名类型,来简化使用。

例子如下:

    class Help
    {
        public static int zero = 0;
        public static double PI = 3.14;
        
    }

使用时如下:
            int z = Help.zero;
            double pi = Help.PI;

用匿名类型简化,不用多余创建一个类。

            //不用给属性设置类型,自动判断属性类型
            //属性的名称就是匿名对象中属性的名称
            //匿名对象的类型不知,只知道匿名对象的名称是 nmbject
            var nmbject = new {
                ZERO = 0,
                PI = 3.14 ,
                Name = "LIUYAN"
            };
            
            //调用 常用的值
            double b = nmbject.PI;
            //nmbject.PI = 2.1;  这个是错的,匿名类型是只读的,所以想要修改属性,就不能设为匿名类型

            //匿名对象也可以为数组
            //属性名称必须完全一样,才代表是同一种匿名类型
            var nmbjectArray = new[] {
                new{
                PI = 3.14,
                Name = "LIUYAN"
                },
                new{
                PI = 3.15,
                Name = "LIUYAN2"
                },
            };

猜你喜欢

转载自blog.csdn.net/qq_38261174/article/details/86346728
今日推荐