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

C#不同类型的成员变量(字段)的默认值介绍

    来源: 互联网  发布时间:2014-10-27

    本文导语:  创建类的一个实例时,在执行构造函数之前,如果你没有给成员变量赋初始值,C#编译器缺省将每一个成员变量初始化为他的默认值。 如果变量是方法的局部变量,编译器就会认为在使用该变量之前,代码必须给它显示的设定...

创建类的一个实例时,在执行构造函数之前,如果你没有给成员变量赋初始值,C#编译器缺省将每一个成员变量初始化为他的默认值。

如果变量是方法的局部变量,编译器就会认为在使用该变量之前,代码必须给它显示的设定一个值。否则会发生“使用了未赋值的局部变量”的错误。

对于其他情况,编译器会在创建变量时,把变量初始化为默认值。
1、对于整型、浮点型、枚举类型(数值型),默认值为0或0.0。
2、字符类型的默认值为x0000。
3、布尔类型的默认值为false。
4、引用类型的默认值为null。

如果声时变量时,为它指定了初始值(int i=10;),那么这个值就用于初始化该变量了。

虽然C#编译器为每个类型都设置了默认类型,但作为面向对象的设计原则,我们还是需要对变量进行正确的初始化。实际上这也是C#推荐的做法,没有对变量进行初始化会导致编译器发出警告信息。我们不可能为所有成员变量赋初始值,当然就是赋了值,也不一定就满足我们的要求。因为我们在使用时,有可能改变我们的初始值。那么我们就要借助构造函数来初始化我们的成员变量。

代码如下:

// 系统将为未在构造函数赋值的成员变量赋默认值

using System;
public class Dog
{
    public string name;
    public int age;
    public static void Main()
    {
        Dog myDog = new Dog();
        Console.WriteLine("myDog的名字为“{0}”,年龄为{1}。", myDog.name, myDog.age);
    }
}


上述程序中,当创建对象myDog时,会调用默认的构造函数。所有字段都会被赋给一个默认的值。
输出结果为:
myDog的名字为“”,年龄为0。

这种特性虽然能够避免编译错误,但是违背了变量的“先赋值、后使用”原则,这些“无害的”默认值很容易产生难以识别的错误,建议尽可能地在构造函数中对所有成员变量赋值。


    
 
 

您可能感兴趣的文章:

  • C#难点逐个击破(6):C#数据类型与.net framework数据类型
  • 操作系统 iis7站长之家
  • c# 所有类型都从Object类型派生
  • c# 引用类型和值类型
  • C#引用类型和值类型的介绍与实例
  • C#中值类型与引用类型作为参数传递时的区别
  • c#值类型和引用类型使用示例
  • c#可空类型的作用说明
  • c# 类型转换
  • C# char类型字符转换大小写的实现代码
  • C#判断数据类型的简单示例代码
  • c# 值类型实例构造器
  • c#值类型与引用类型的区别
  • C#随机生成Unicode类型字符串
  • c#字符串值类型与引用类型比较示例
  • C# 遍历枚举类型的所有元素
  • c# 引用类型构造器
  • c# 类型构造器学习
  • c#判断磁盘驱动器类型的两种方法介绍
  • 深入C#中使用SqlDbType.Xml类型参数的使用详解
  • ORACLE数据库常用字段数据类型介绍
  • mysql 增加修改字段类型及删除字段类型
  • ado的rs.field("字段名")可以访问任何类型的数据,那吗java里面这种问题如何处理。是不是要先判断类型然后再根据类型来使用相应的getint or getString阿!谢谢了!在线等待!
  • mssql查找备注(text,ntext)类型字段为空的方法
  • 如何获得表中字段的类型
  • 请问保存文章内容的字段应用什么类型的(oracle),急!!!
  • 如何显示BLOB,CLOB类型字段的内容
  • 关于Oracle BLOB类型,一个String字符怎么写入BLOB字段?
  • java怎样读取数据库表中字段的数据类型?
  • 用什么字段类型?
  • 如何成功读取并显示SQL数据库中image类型字段?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 枚举类型变量如何定义与初始化,如何给该变量加入新值?
  • 请问在jbuilder中如何将String类型的字符串赋值给StringBuffer类型的变量?
  • 请问:在类中能不能定义static pthread_mutex_t 类型的成员变量啊,怎么老是说没有这种类型啊?
  • 编写一个控制台程序,声明一个double类型的变量并且将其初始化为1234.5678。然后取出这个值的整数部分,把它存储在一个类型为long的变量
  • 菜鸟问题:如何了解系统关于某个C语言变量类型是怎样定义的?
  • 如何得到一个long类型变量的显示长度
  • 请问如何将一个转化成unicode的QString类型的变量正确的负值给char*
  • 知道TCP/UDP的包头,如何判断其应用层协议类型,struct tcphdr和 struct udphdr结构中那个变量能判断应用层协议类型。
  • 请问:java下有没有方法可以把字符串转变成类型或变量?
  • 请问调用那个方法能够得到变量类型的返回值?
  • 如何将unsigned char 数组内保存的数据拷贝到QString类型的变量中
  • Sqlserver 表类型和表变量介绍
  • 关于变量类型转换、
  • 成员变量char类型被自动初始化的值是什么?
  • 关于定义void类型的变量的问题,高手请进
  • 请问各位大虾,怎样把一个string类型变量转变成int型?
  • Linux 的C语言下 有没有系统时间的变量类型?
  • 太奇怪了,float类型变量居然赋值不了!!!!
  • 学习C#匿名类型与隐式类型变量
  • 请问:在GCC里的C程序里的变量的声明是不是只能在前面,而且相同类型的变量的声明只能放在一起?如果不是,请问怎么样可以解决这个问题.
  • java命名空间javax.xml.ws注释类型webserviceref成员方法: type定义参考
  • java 基本类型或可序列化类型,这里说的可序列化类型是什么意思???具体都有哪些类型??谢谢
  • java命名空间javax.annotation注释类型resource的类成员方法: authenticationtype定义及介绍
  • 求救:关于将类型名称字符串转变成类型相应类型的问题
  • java命名空间javax.annotation注释类型resource的类成员方法: type定义及介绍
  • 请问能否把任何类型数据转换为一种类型,然后从这种类型又转换回去?例如:int>>Object Object>>int
  • java命名空间javax.xml.ws注释类型webserviceref成员方法: value定义参考
  • oracle中的空类型与c语言的空类型相匹配吗?
  • java命名空间javax.annotation注释类型resource的类成员方法: shareable定义及介绍
  • 如何将String类型转换成Blob类型
  • java命名空间javax.jws注释类型webparam的类成员方法: mode定义及介绍


  • 站内导航:


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

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

    浙ICP备11055608号-3