C# new和初始化
虽然知道使用new可以创建对象,但一直不是很理解初始化和new等知识的具体。
通过8个问题和需求,了解相关知识。
了解问题和需求
1.new 的三个步骤
2.初始化是什么意思。
3.变量声明后和变量赋值为null或变量调用了new的区别。
4.字段不是变量。
一、new的三个步骤:
1 在栈或者堆中开辟空间,空间的大小由类决定,进行内存空间指向。
2 在开辟的控件中进行创建对象
个人理解创建对象就是,在内存空间中存放字段,但是字段依然没有进行数据存放的内存空间指向,虽然这个对象在内存中占了空间,但是没有进行具体分配。
3 进行初始化。
二、初始化:
初始化就是调用构造函数,对所有的字段进行赋值,赋值为默认值。
引用类型为null。
值类型int为0,double为0.0。
个人理解:让字段具有默认值后,进行了空间的分配,内存中存储的就是对应的实际值,null表示我没有进行具体的使用,但是我有存储数据的空间。
三、变量声明后和变量赋值为null或变量调用了new的区别。
主要区分函数中的变量和对象中的字段的区别。
3.1变量声明后,没有进行赋值的含义:
声明未赋值,会无法生成,提示‘使用了未赋值的变量’。
通过Reflecter可以看到,声明变量未赋值,实际是不存在的,那么就是说没有进行分配内存。
3.2变量赋值为null
表明变量具有内存空间,但是内存中什么也不存在。
3.3变量调用new
变量中存在了对象也就是存在了字段,只是字段进行了赋值,赋值为默认值。
四、字段不是变量。
通过3和4感受一下变量和字段的区别。
变量存在函数中,字段是类的成员。
类中函数调用字段或者对应的属性,只会出现为null的情况。
类中函数声明变量,会出现无法编译的情况。
C# new和初始化的更多相关文章
- Java初始化过程
这篇文章主要讲解Java在创建对象的时候,初始化的顺序.主要从以下几个例子中讲解: 继承关系中初始化顺序 初始化块与构造器的顺序 已经加载过的类的初始化顺序 加载父类,会不会加载子类 创建子类对象会不 ...
- nginx源码分析之模块初始化
在nginx启动过程中,模块的初始化是整个启动过程中的重要部分,而且了解了模块初始化的过程对应后面具体分析各个模块会有事半功倍的效果.在我看来,分析源码来了解模块的初始化是最直接不过的了,所以下面主要 ...
- nginx源码分析之网络初始化
nginx作为一个高性能的HTTP服务器,网络的处理是其核心,了解网络的初始化有助于加深对nginx网络处理的了解,本文主要通过nginx的源代码来分析其网络初始化. 从配置文件中读取初始化信息 与网 ...
- Java类变量和成员变量初始化过程
一.类的初始化 对于类的初始化:类的初始化一般只初始化一次,类的初始化主要是初始化静态成员变量. 类的编译决定了类的初始化过程. 编译器生成的class文件主要对定义在源文件中的类进行了如下的更改: ...
- Git学习笔记一:新建本地仓库及初始化
1.百度搜索Git下载安装,直接按默认选项安装即可. 例如:Git-2.7.2-32-bit_setup.1457942412.exe 2.配置Git信息,建立版本仓库 (Alt+PrintScerr ...
- Spring MVC初始化参数绑定
初始化参数绑定与类型转换很类似,初始化绑定时,主要是参数类型 ---单日期 在处理器类中配置绑定方法 使用@InitBinder注解 在这里首先注册一个用户编辑器 参数一为目标类型 proper ...
- SpringMVC初始化参数绑定--日期格式
一.初始化参数绑定[一种日期格式] 配置步骤: ①:在applicationcontext.xml中只需要配置一个包扫描器即可 <!-- 包扫描器 --> <context:comp ...
- SpringMvc中初始化参数绑定
初始化参数绑定与类型转换很类似,初始化绑定时,主要是参数类型 ---单日期 在处理器类中配置绑定方法 使用@InitBinder注解 在这里首先注册一个用户编辑器 参数一为目标类型 proper ...
- ABP源码分析二:ABP中配置的注册和初始化
一般来说,ASP.NET Web应用程序的第一个执行的方法是Global.asax下定义的Start方法.执行这个方法前HttpApplication 实例必须存在,也就是说其构造函数的执行必然是完成 ...
- 【初探Spring】------Spring IOC(三):初始化过程---Resource定位
我们知道Spring的IoC起到了一个容器的作用,其中装得都是各种各样的Bean.同时在我们刚刚开始学习Spring的时候都是通过xml文件来定义Bean,Spring会某种方式加载这些xml文件,然 ...
随机推荐
- SharePoint 2013 workflows stop working (Failed on started.)
前言 最近,使用工作流的时候碰到了一个问题,突然间所有工作流都无法启动,报错Failed on started. 同时,工作流内部报错,工作流被系统账号取消了. 查了很久,发现系统打了windows ...
- Windows下LuaJIT的编译和使用
1.下载LuaJIT,download>> 2.编译 开始 –> 程序 –> Microsoft Visual Studio xx –> Visual Studio To ...
- 我们为什么不用 MVC 拦截器
一:MVC 中的拦截器 众所周知,MVC 存在如下几个主要的拦截器:IActionFilter.IExceptionFilter.IResultFilter.IAuthorizationFilter, ...
- [转]php cli命令 自定义参数传递
FROM :http://www.cnblogs.com/zcy_soft/archive/2011/12/10/2283437.html 所有的PHP发行版,不论是编译自源代码的版本还是预创建的版本 ...
- 网络编程之webclient和httpwebrequest的使用
(1)Lambda表达式 “Lambda表达式”是一个匿名函数,它可以包含表达式和语句,并且可用于创建委托或表达式树类型. 所有 Lambda 表达式都使用 Lambda 运算符 =>,该运算符 ...
- Pitch,Yaw,Roll的概念
在航空中,pitch, yaw, roll下图所示. pitch是围绕X轴旋转,也叫做俯仰角. yaw是围绕Y轴旋转,也叫偏航角. roll是围绕Z轴旋转,也叫翻滚角. 在3D系统中,假设视点 ...
- 数学图形(1.48)Cranioid curve头颅线
这是一种形似乎头颅的曲线.这种曲线让我想起读研的时候,搞的医学图像三维可视化.那时的原始数据为脑部CT图像.而三维重建中有一种方式是面绘制,是将每一幅CT的颅骨轮廓提取出来,然后一层层地罗列在一起,生 ...
- C# DevExpress TabPane【转】
DevExpress TabPane能够快速简单地实现了Tab窗口的功能,相对XtraTabControl来说功能较为简单,也能够更快实现功能. 1.添加TabPane控件 将它拖到form即可. 2 ...
- 左手坐标系和右手坐标系 ZZ
今天记录一下一些基本的数学知识,左手坐标系和右手坐标系.这些对于搞图像开发或者游戏开发的朋友来说,应该是很基础的东西,不过对于大部分人来说还是比较陌生的知识.之所以看这方面资料主要是因为在使用Andr ...
- Apache Mahout:适合所有人的可扩展机器学习框架
http://www.ibm.com/developerworks/cn/java/j-mahout-scaling/ 在软件的世界中,两年就像是无比漫长的时光.在过去两年中,我们看到了社交媒体的风生 ...