zoukankan      html  css  js  c++  java
  • 对象构造者

    概述:
      我们在声明数组时,可以同时对其进行初始化,这样就省去了很多麻烦,但是在创建类的对象时,这招可就不灵了,我们要么调用该类的构造函数完成对象的初始化,要么就手工进行初始化。这两种方法都不太方便,使用构造函数来对对象进行初始化时,我们为了某种灵活性,可能需要编写构造函数的多个重载版本,实在是麻烦。
      C#3.0中加入的对象构造者特性,使得对象的初始化工作变得格外简单,我们可以采用类似于数组初始化的方式来初始化类的对象,方法就是直接在创建类对象的表达式后面跟上类成员的初始化代码。

    实例代码:

    class Point
        
    {
            
    public int X getset; }

            
    public int Y getset; }

            
    public override string ToString()
            
    {
                
    return "(" + X.ToString() + "" + Y.ToString() + ")"
    ;
            }

        }


        
    class Rectangle
        
    {
            
    public Point P1 getset; }

            
    public Point P2 getset; }

            
    public Rectangle()
            
    {
                P1 
    = new
     Point();
                P2 
    = new
     Point();
            }

            
    public override string ToString()
            
    {
                
    return "P1: " + P1 + ", P2: " +
     P2;
            }

        }
     
        
    class
     ObjectStructurer
        
    {
            
    public static void
     Main()
            
    {
                Point thePoint 
    = new Point() { X = 1, Y = 2 }
    ;
                Console.WriteLine(
    "Point(X, Y) = {0}"
    , thePoint);

                Rectangle theRectangle 
    = new
     Rectangle()
                
    {
                    P1 
    = { X = 1, Y = 1 }
    ,
                    P2 
    = { X = 100, Y = 200 }

                }
    ;
                Console.WriteLine(theRectangle); 
            }

        }

     我们在定义Point类的X和Y属性时,只须写上该属性的get和set访问器声明,C#编译器会自动为我们生成默认的get和set操作代码,当我们需要定义简单属性时,这个特性非常有用。

      我们以new Point() { X = 1, Y = 2 };语句,轻松的完成了对Point类的初始化工作。在创建类的对象时,我们可以按照需要去初始化类的对象,只要在类的创建表达式后跟上要初始化属性的列表即可,且可以只对需要初始化的属性赋初值,而无需把所有属性的初始值都写上去。

      在theRectangle对象的初始化表达式中,我们首先对P1属性进行初始化,然而P1属性也是一个自定义的类型,所以P1属性的初始化是另一个类型(Point)的初始化表达式,我们可以这样的方式来对更加复杂的类型进行初始化。

    运行结果:
            

  • 相关阅读:
    Python学习(3)——if语句
    Python学习(2)——编码
    一次性邮箱
    Python学习(1)
    Hello World
    java设计模式创建篇------原型模式
    Java技巧------Cloneable接口与clone方法
    java设计模式创建篇------抽象工厂
    java设计模式创建篇------工厂模式
    python函数式编程
  • 原文地址:https://www.cnblogs.com/abcdwxc/p/966790.html
Copyright © 2011-2022 走看看