欢迎来到飞鸟慕鱼博客,开始您的技术之旅!
当前位置: 首页知识笔记正文

[注意事项]c# 3.0的新功能[3]-了解对象Initializers

墨初 知识笔记 127阅读

CodeusingSystem命名空间net30net函数{ publilclassobject {/* */* *对象初始值设定项包括逗号分隔的值列表。用{和}包起来。每个初始化的成员都是一个公共属性或字段。*当使用对象初始化器时,调用默认的构造函数,然后分配相应的公共成员。对象初始化器*的这个特性在语法上得到了本质上的简化。生成的final IL也是一个调用默认构造函数,然后给对应的public成员赋值的过程。*/publistaticvoidtest(){ Test1();} publicstaticvoidTest1(){//makeapointbysettingeachpropertymmanually。point first point=new point();第一点。X=10第一点。Y

n>= 10;
            
// Make a Point via a custom constructor.
            Point anotherPoint = new Point(2020);
            
// Make some Point types using the new object init syntax.
            
//Under C# 3.0, we could now make Points using any of the following approaches:
            var yetAnotherPoint = new Point { X = 30, Y = 30 };//is implicitly typed
            Point finalPoint = new Point { X = 30, Y = 30 };//隐示的调用默认的构造函数。
            Point finalPoint1 = new Point() { X = 30, Y = 30 };//显示的调用默认的构造函数。
            /*
             * 导致X value of 100 and a Y value of 100, regardless of the fact that our constructor arguments
             * specified the values 10 and 16
             
*/

            Point pt 
= new Point(1016{ X = 100, Y = 100 };

            Console.WriteLine(firstPoint.ToString());
            Console.WriteLine(anotherPoint.ToString());
            Console.WriteLine(yetAnotherPoint.ToString());
            Console.WriteLine(finalPoint.ToString());
            Console.WriteLine(finalPoint1.ToString());
            Console.WriteLine(pt.ToString());
        }




    }

    
public enum PointColor
    
{ LightBlue, BloodRed, Gold }

    
public struct Point
    
{
        
public int xPos, yPos;
        
private PointColor c;
        
public Point(PointColor color)
        
{
            xPos 
= 0; yPos = 0;
            c 
= color;
        }

        
public Point(int x, int y)
        
{
            xPos 
= x; yPos = y;
            c 
= PointColor.Gold;
        }


        
public int X
        
{
            
get return xPos; }
            
set { xPos = value; }
        }

        
public int Y
        
{
            
get return yPos; }
            
set { yPos = value; }
        }

        
//public override string ToString()
        
//{ return string.Format("[{0}, {1}]", xPos, yPos); }

        
public override string ToString()
        
return string.Format("[{0}, {1}, Color = {2}]", xPos, yPos, c); }
    }


    
public class TestFalgEnum
    
{
        
public static void TestEnumFlag()
        
{
            
//1248
            
//int i = 1;
            
//int ii = 1;
            
//Console.WriteLine(i ^ ii);
            test aa = new test();
            test bb 
= new test();
            aa 
= test.a;
            bb 
= test.b;
            test cc 
= aa | bb;
            Console.WriteLine(Enum.Format(
typeof(test), cc, "d"));
            Console.WriteLine(cc 
== test.c);
        }

    }

    [Flags]
    
enum test
    
{
        a 
= 1, b = 2, c = 3, d = 8
    }

}

标签:
声明:无特别说明,转载请标明本文来源!