当前位置:  编程技术>.net/c#/asp.net

C#类的学习笔记之C#构造函数

    来源: 互联网  发布时间:2014-08-30

    本文导语:  1,如果没有提供构造函数,编译器会在后台创建一个默认的构造函数,这是一个非常基本的构造函数,只能把成员字段初始化为标准默认值。 2,C#中的基本字段,默认情况下初始化为0,而C++中的基本字段不进行初始化,不需...

1,如果没有提供构造函数,编译器会在后台创建一个默认的构造函数,这是一个非常基本的构造函数,只能把成员字段初始化为标准默认值。

2,C#中的基本字段,默认情况下初始化为0,而C++中的基本字段不进行初始化,不需要像C++那样频繁的编写构造函数。

3,可以为构造函数提供任意多的重载,但如果提供了构造函数,编译器就不会自动提供默认的构造函数,这时使用无参数的构造函数实例化对象会报错。
如:类Class1只有一个带有一个参数的构造函数 ,那么 Class1 cls=new Class1()会报错。
 
4,如下:如果不为类MyNumber定义任何公共或受保护构造函数,那么就不能使用new运算符在外部代码中实例化该类
 

代码示例:
public class MyNumber
{
  private int number;
  private MyNumber(int number)
  {
      this.number = number;
  }
}

在如下情况中使用:
1)、类仅用于静态成员或属性
2)、希望类通过调用某个静态成员函数来实例化

5,可以给类创建无参数的静态构造函数,这种构造函数只执行一次。
如这样定义构造函数static MyNumber() { Console.WriteLine("123"); }的话,那么无论怎样用new 生成实例,构造函数都只执行一次。

※注意
1),静态构造函数是在加载类时执行,而无参数构造函数是在创建实例时执行,所以可以共存。
2),静态构造函数没有修饰符public static MyNumber() { Console.WriteLine("123"); },这样定义会报错。
3),静态构造函数不能带参数
4),一个类中静态构造函数只能有一个
5),静态构造函数只能访问类的静态成员,不能访问实例成员

6,构造函数的初始化器
如下类A,有两个构造函数,可以考虑用构造函数的初始化器
 

代码示例:

class A
{
  private string str1;
  private uint iCnt;

  public A(string str, uint i)
  {
      str1 = str;
      iCnt = i;
  }

  public A(string str)
  {
      str1 = str;
      iCnt = 100;
  }  
}

修改成如下的定义:
 

代码示例:

class A
{
  private string str1;
  private uint iCnt;

  public A(string str, uint i)
  {
      str1 = str;
      iCnt = i;
  }

  public A(string str)
      : this(str, 100)
  {

  }
}

如果使用基类的构造函数,只要把this关键字换为base即可,但不能有多个调用。


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 用什么学习函数库?
  • T-SQL常用游标函数实例学习
  • SQL学习笔记七函数 数字,日期,类型转换,空值处理,case
  • 学习C#静态函数及变量的一个精典例子与代码
  • 学习 SQL Server 的三种自定义函数
  • c# Base64编码函数学习笔记
  • SQL学习笔记四 聚合函数、排序方法
  • ORACLE学习笔记-添加更新数据函数篇
  • C# 泛型类与泛型函数的实例学习
  • jQuery的animate函数学习记录
  • php取整函数用法实例学习
  • Java反射学习 getClass()函数应用
  • oracle 合并查询 事务 sql函数小知识学习
  • jQuery学习笔记之jQuery构建函数的7种方法
  • php 字符串替换函数学习
  • sql server 2005 窗口函数(OVER)学习笔记
  • Python函数学习笔记
  • python函数缺省值与引用学习笔记分享
  • 小弟写了一个很简单的动态库实例函数用来学习,但编译通过之后执行可执行文件报错。跪请高手帮忙!!!!
  • 函数指针与指针函数的学习总结
  • PHP介绍及学习网站推荐
  • 想深入学习Java应该学习哪些东西
  • 准备学习docker: docker version命令查看版本
  • 新手提问:学习c++同时也想学习unix和linux
  • HTML 学习总结及下一步学习教程推荐
  • 学习c后,学习pb,大家提点建议,谢谢哦
  • OpenStack相关学习资料搜集
  • 有最近开始学习Minix的吗?一起来学习吧
  • juqery的python实现:pyquery学习使用教程
  • 我想问问哪里有AIX下啊!~版本越新越好!~我想拿来学习学习
  • 想找共同学习Linux的新手,一起学习,共同成长


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3