c# 之 New新知
本人从事.NET工作已经一段时间,毕业之前一直想着做C++的,后来因为各种原因(跟学校导师相关),走向了.NET之路,从而时不时补一下.net的基础知识,因为自己的.NET知识还不是很扎实。近期每天早上上班前都看一篇AnyTao老师的《你必须知道的.NET》系列博文(ps.非常欣赏AnyTao老师的说识风格,讲得非常细腻),故温故而知新,记录下相关知识。
以前认识学C++,对New的认识是,凡是用了New,都是创建一个对象,对于值类型的变量是不可以用new的,只有引用类型的类型才可以用new创建一个对象,是因为C++本来就不是一个完全面向对象的语言。对于C++,用了New来创建一个对象,就意味着在堆上开了一个内存空间,并且要自己手动去释放,否则会导致内存溢出。
对于在.NET里面的C#,New却并非如此,而且会演变出更多的功能——约束。在C#里面,New一个变量,并且就意味着在托管堆上面开辟内存,值类型也可以使用New,例如:int a = new int(),对于这样new一个变量出来,只是在堆栈(栈,其实一直想不明白为什么要叫“堆栈”而不叫栈,叫“栈”岂不是能更加明确的和“堆”分开来?!)上面初始化了一个int变量并且默认赋值为0而已。
以下为验证小程序
namespace ForNew
{
class Program
{
static void Main(string[] args)
{
int i = new int();
Console.WriteLine(i);
Console.Read();
}
}
}
输出为:0
另外,New还可以用于泛型类里面,用于约束某个泛型必须显式带一个不带参数的构造函数,例如:
class Test<T> where T : new()
{
public string str { get; set; }
}
则使用该模板类的时候,T类型必须有一个不带参数的构造函数,否则编译出错。
这次写得有点匆促,明天再补充相关内容,有不对的地方,欢迎指出探讨。再次感谢AnyTao老师的教导,附上他《你必须知道的.NET》系列博文地址:http://www.cnblogs.com/series/2/
c# 之 New新知的更多相关文章
- 新知食APP架构分析--北京识物科技有限公司旗下产品
俗话说不打无准备之仗,这次真是有点懵逼了,建议大家去面试的时候,尤其是去小型互联网公司的时候,如果你想比其他人有竞争力,那么你要研究一下当前他的公司正在开发产品,他们的业务类型是什么样的,比如他们公司 ...
- CDNDrive 第一个版本发布 & 布客新知第二次备份完成
CDNDrive 第一个版本发布,新适配五个图床 https://github.com/apachecn/CDNDrive 另外,布客新知第二次备份完成 TutorialsPoint:http://i ...
- 所学新知——int、char型转string 类型等
1. 利用stringstream类 定义头文件#include<sstream> 通过 int a; char b; sstream ss,ss1; ss<<a; ss1&l ...
- cocos2d-x项目过程记录(cocos2d-x的新知)
1.给CCMenuItem带上点击参数(这是CCNode的一个属性) CCMenuItem *item = CCMenuItemSprite::create(unselectedPic, select ...
- <转>请戒掉成功学和正能量,那是麻痹人的毒药 | 新知
非常不幸的是,这将是一场非常糟糕的演说.我不想骗你们,你们从我这里几乎什么也学不到.你们在离开的时候肯定会感到失望,你们的生活并不会得到改善. 更糟糕的是,你还会意识到生活的本质毫无意义,你的一切努力 ...
- 最近见到一个用react native实现的标尺动画,不知道如何实现 帖两张图(新知食App)
很恶心,这款App的标尺没有做兼容,我在模拟上看不到效果,无法说明我想做出的东西的效果,无奈粘一张图吧! 就是这么一个屌样子,如何实现?
- NumPy 新知
import numpy as np a = np.arange(5) a array([0, 1, 2, 3, 4]) 增加一个维度: b = a[:, None] c = a[:,np.newax ...
- 斩获新知——记一次reverse的实现过程
最近学习C++,在实现reverse模板函数的时候,从一个小问题开始,在对这个问题的旁敲侧击当中带起了更多疑惑,顺藤摸瓜之后,尽管没有将诸多问题完美解答,但整个过程下来却也似有所获.最初的问题从使用C ...
- c语言新知
C语言学得有点懈怠,昨个遇一个高手. 教了我两天,真细腻. 第一天,让我写一个程序删除字符串多余空格. 我俩代码对比 结果很显然了.
随机推荐
- [React] Creating a Stateless Functional Component
Most of the components that you write will be stateless, meaning that they take in props and return ...
- 从BAE到SAE,从SAE又回到BAE
版权声明:本文为博主原创文章,未经博主允许不得转载. [很久以后] 这段话是很久之后补充的,发现错误要勇于改正,以下红色字体是对以前观点的改正, 大概总结下: 1.bae最大缺点是需要备案,不过现在看 ...
- MySQL协议分析
MySQL协议分析 标签: mysql 2015-02-27 10:22 1807人阅读 评论(1) 收藏 举报 分类: 数据库(19) 目录(?)[+] 1 交互过程 MySQL客户端与 ...
- xcode 高亮
Cmd+E, Cmd+F and Cmd+G combo is usefull. Depending on why you want to do this, edit all in scope (Ct ...
- 【转】cocos2d-x 开发中使用的一些工具
http://k57box.blog.163.com/blog/static/142261374201327112050361/ 这些工具平常也用到,不过没有像这样整理出来,这是我在网上看到的.就记录 ...
- quartz 报错:java.lang.classNotFoundException
最近在做一个调度平台改造的项目,quartz在测试环境跑的是单机环境,生产上两台服务器做集群. 测试环境是ok的,生产上线后报错,一个类java.lang.classNotFoundException ...
- js基础1
一.JavaScript 不同于Java 有三部分组成 核心(ECMAScript) 文档对象模型(DOM) 浏览器对象模型(BOM) 二.var 是定义数据前加的前缀 三.弹出 alert( ) ...
- C#类和成员定义
1 定义类 C#用关键字class来定义类.默认情况下,类声明为内部(internal)的,即只有当前项目中的代码才能访问它.与之相对应的,还可以用public关键字来修饰,这样该类还可以由其 ...
- JavaScript高级程序设计(一):JavaScript简介
一.JavaScript实现 1.一个完整的JavaScript包含三个部分组成: 1)ECMAScript 核心 2)DOM文档对象模型 3)BOM浏览器对象模型 2.文档对象模型(DOM) 文档对 ...
- LM2596扩流