• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C#教程 > c#对象初始化顺序实例分析

c#对象初始化顺序实例分析

作者:McJeremy&Fan 字体:[增加 减小] 来源:互联网 时间:2017-05-28

McJeremy&Fan 通过本文主要向大家介绍了c#对象初始化器,c#对象初始化,c#对象数组初始化,c#数组初始化,c#list初始化等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

本文实例分析了c#对象初始化顺序。分享给大家供大家参考。具体如下:

using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1 {
  class Program {
    static void Main(string[] args) {
      A a = new B();
      Console.ReadLine();
    }
  }
  class A {
    //调用到这个构造函数时:x=1,y=0
    public A() {
      //该函数在B类中被重载,因此输出 x=1,y=0
      Console.WriteLine("在A类的构造函数中");
      PrintFields();
    }
    public virtual void PrintFields() { }
  }
  class B : A {
    //派生类变量/静态成员的执行顺序优于基类
    //先变量,因此,x=1,y=0
    int x = 1;
    int y;
    //后构造函数,此时,先调用基类构造函数
    public B() {
      //运行到这里时,A类构造函数已经执行完毕
      y = -1;
      Console.WriteLine("在B类的构造函数中");
      //此时 x=1,y=-1
      PrintFields();
    }
    public override void PrintFields() {
      Console.WriteLine("x={0},y={1}", x, y);
    }
  }
}

</div>

这里备忘一下c#对象初始化顺序及C++对象初始化顺序:

C#对象初始化

1. 先变量后构造函数。变量先被初始化,然后构造函数被执行

2. 先静态化后实例化。当一个类被访问时,静态变量和构造函数最先被初始化.接着是对象的实例化变量和构造函数被初始化

3. 先派生类后基类。对于变量和静态构造函数,派生对象在基对象之前被初始化.比如C类派生自B类,B类派生自A类,那么变量和静态构造函数被初始化次序是C-B-A.

4. 除了实例构造函数。对于实例构造函数,基类构造函数在派生类构造函数之前执行,实例构造函数被执行次序是A-B-C.

5. 不要假定变量的次序。Fields依据它们在源文件中的声明的顺序依次初始化.然而,自从程序员和工具可以随意安排变量的声明后,你不应该在依靠变量任何特别的次序初始化

6. 对虚方法用两个阶段的构建。避免从一个构造器调用虚方法. 如果在初始化一个对象时需要调用一些虚方法,应在完整构造该对象的地方使用两阶段的构建,并随后调用已构造对象的初始化方法。

C++构造函数调用顺序

1. 如果类里面有成员类,成员类的构造函数优先被调用;

2. 创建派生类的对象,基类的构造函数优先被调用(也优先于派生类里的成员类);

3. 基类构造函数如果有多个基类,则构造函数的调用顺序是某类在类派生表中出现的顺序而不是它们在成员初始化表中的顺序;

4. 成员类对象构造函数如果有多个成员类对象,则构造函数的调用顺序是对象在类中被声明的顺序而不是它们出现在成员初始化表中的顺序;

5. 派生类构造函数,作为一般规则派生类构造函数应该不能直接向一个基类数据成员赋值而是把值传递给适当的基类构造函数,否则两个类的实现变成紧耦合的(tightly coupled)将更加难于正确地修改或扩展基类的实现。(基类设计者的责任是提供一组适当的基类构造函数)

希望本文所述对大家的C#程序设计有所帮助。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • c#对象初始化顺序实例分析
  • c#构造初始化的顺序浅析

相关文章

  • 2017-05-28C#中尾递归的使用、优化及编译器优化
  • 2017-05-28C#实现用户自定义控件中嵌入自己的图标
  • 2017-05-28C#通过接口与线程通信(捕获线程状态)示例代码
  • 2017-05-28SQL语句删除和添加外键、主键的方法
  • 2017-05-28C#使用StreamWriter写入文件的方法
  • 2017-05-28asp.net新闻列表生成静态页之批量和单页生成
  • 2017-05-28ScriptControl控件执行自定义VBS脚本示例分析
  • 2017-05-28C#读取文件所有行到数组的方法
  • 2017-05-28使用Barrier来控制线程同步示例
  • 2017-05-28C#实现鼠标移动到曲线图上显示值的方法

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C#实现Excel表数据导入Sql Server数据库中的方法
    • C#反序列化到类的实现方法
    • C#使用jQuery实现无刷新评论提交的方法
    • 详细解析C#多线程同步事件及等待句柄
    • C#中的预处理器指令详解
    • C#生成注册码的实例代码
    • C#键盘鼠标钩子实例
    • unity3d调用手机或电脑摄像头
    • C#清理非托管对象实例分析
    • C#中string和StingBuilder内存中的区别实例分析

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有