C#中关于对值类型和引用类型初始化的问题

值类型的话inti=newint();它的初始值就是0;那么引用类型:classAAa=newA();通过调用默认构造函数(不人为修改默认构造函数),那他的初始值是什么?... 值类型的话
int i = new int();
它的初始值就是0;
那么引用类型:
class A
A a = new A();
通过调用默认构造函数(不人为修改默认构造函数),那他的初始值是什么?是null??
如果类A包含了字段,属性和方法,那这些初始值都是为null吗??可是字段如果是值类型(如int),初始值是null会不会说不通?恳请大神讲解。
展开
 我来答
匿名用户
推荐于2016-07-21
展开全部
引用类型A new后就为其分配了内存,调用构造函数初始化 这时a就是一个A类型的对象了
如果不使用new对其进行初始化,那么a默认为null
A a; // a为null
值类型不能为null,哪怕不使用new对其初始化值类型依旧拥有默认值
int i; // i为0
更多追问追答
追问
如果使用了new调用默认构造函数来初始化呢,相应的字段、属性和方法都有初始值吗??如果在默认构造函数中没有对他们进行初始化,是否会报错?
追答

对于值类型new不new都会有初始值  ,引用类型不new就是null 

对于值类型,如果构造函数没有对他的引用类型的成员初始化 他的引用类型的成员就是null

struct Val{
  String str;//引用类型
  int i;     //值类型   
}
Val v; 
// v . str 为null
// i 为 0

但是如果是引用类型没有new,他就是null,意思是没有分配任何内存空间 所以他所包含的对象全都不存在 

class C{
    String s;
    int i;
}
C c;// null

未初始化并不会报错 但是尝试访问null对象的成员会造成错误

And....虽然值类型不new也能获得初始值 但是如果不赋值就调用会触发编译错误

淡跃0Hy
2015-02-16 · TA获得超过142个赞
知道小有建树答主
回答量:74
采纳率:0%
帮助的人:83.6万
展开全部
值类型引用报错引用类型值类型没初始化没内存辟空间
追问
不知道你在说什么
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式