c# 构造器的一点理解(2)
来源:互联网 发布:crontab 执行php延迟 编辑:程序博客网 时间:2024/05/22 15:00
上一边文章中对引用类型的构造器有了一个介绍。
本文的重点是 值类型的构造器
下边对值类型的构造器进行一下说明 :
先说一下我对值类型构造器的初步印象。
1 值类型一般情况先不需要有构造函数,clr保证其每个字段都为0或者null,负责每个字段的初始化。
2 值类型可以有构造函数,但是必须是有参构造器, 而且必须是被显式的调用,否者不能被调用。
3 如果值类型没有构造函数,那么clr保证值类型中的每个字段都被初始化成0 或者是null ,但是一旦有了构造器那么clr不扶着初始化每个字段,只能在构造器里面自己初始化每个字段的初始值。
4 只有嵌套在类内部的值类型才会被clr保证初始值是null 或者是 0 . 如果是堆栈上的值类型不保证被初始化成0 或者是null。
先变就几种常见的错误用代码示例一下
struct point{int x = 5 ; //为什么这么些是错误的 : 因为这个写法是为了方便无参构造函数初始化字段的一种简便的语法,因为值类型不允许有无参构造函数,所以这样是错误的int y ;}
struct point{//int x = 5 ; //为什么这么些是错误的 : 因为这个写法是为了方便无参构造函数初始化字段的一种简便的语法,因为值类型不允许有无参构造函数,所以这样是错误的int x ;int y ;//point(){} 不能有无参构造函数 这么些错误的point(int i) {//如果有了构造函数,那么clr不保证每个字段都能被初始化成0 或者null ,//所有在值类型内部就要保证每个字段被初始化成0 或者这null 。//这是因为值类型的任何字段被调用之前,那么每个字段都保证有一个初始值。x=i ; //所以这种写法是错误的。x =y = i ;//这种写法是正确的。 或者把y赋值成0 ;}}
如果大家真的多这个有兴趣,要自己多动手多试验啊, 今天多值类型的构造器,我就研究到这里了,入门了,以后有空在深入的研究啊。
这边的代码是我学习的全部代码
using System;using System.Data;using System.Text;namespace myStu{/* 值类型的构造器*/class programe{ static void Main(string[] arg){try{ baseClass obj = new baseClass() ;obj.Test() ;}catch (Exception err){Console.WriteLine(err.Message);}}} sealed class baseClass { public void Test() {Console.WriteLine("基类的构造器") ; } }struct point{//int x = 5 ; //为什么这么些是错误的 : 因为这个写法是为了方便无参构造函数初始化字段的一种简便的语法,因为值类型不允许有无参构造函数,所以这样是错误的int x ;int y ;//point(){}不能有无参构造函数point(int i) {//如果有了构造函数,那么clr不保证每个字段都能被初始化成0 或者null ,//所有在值类型内部就要保证每个字段被初始化成0 或者这null 。//这是因为值类型的任何字段被调用之前,那么每个字段都保证有一个初始值。x=i ; //所以这种写法是错误的。x =y = i ;//这种写法是正确的。}}}
- c# 构造器的一点理解(2)
- c#构造器的一点理解(一)
- c#构造器的一点理解(三)
- 对c#中的静态构造函数的一点理解
- C# 委托与事件的一点理解(2)
- C# abstract的一点理解
- Java构造方法继承的一点理解
- c# 构造函数的一点见解
- C# 委托与事件的一点理解(1)
- C#委托与事件的一点理解(3)
- C#中foreach的一点理解
- 对C#委托的一点理解
- C#中线程锁的一点理解
- 对c++拷贝构造函数的一点理解
- 构造器的理解
- 关于Java构造器的一点归纳
- C# 静态构造函数(类型构造器)的要点
- C#观察者模式的实现的一点理解。
- ARM7---矩阵键盘
- 常用 Java 静态代码分析工具的分析与比较
- Android 自定义AlertDialog并通过AlertDialog修改TextView的值
- 使用Android中sqlite表的全文检索
- Session监听器处理代码学习
- c# 构造器的一点理解(2)
- 第六章堆排序之“最大优先级队列”
- Virtualbox 学习 (三) --- 关于 Guest Additions
- OpenGL基础知识(五)
- HDU---2022题海选女主角
- 从SDRAM启动U-Boot
- 简单总结一下指针
- 盛开—痛苦的信仰
- Linux下安装FastCV 运行samples