Atitit .c#的未来新特性计划草案
Atitit .c#的未来新特性计划草案
2. 三、设计面向 面向变量的汇编语言,高级语言出现后,从Pascal/C语言面向过程和变量,到C++以后的面向对象2
1. C#的未来:追踪空引用
olang 都体现了新一代编程语言的设计哲学。
简约的关键字,
非侵入式的面向对象设计(没有了继承)
1.1. 2. 变量命名空间
class ProductUtil{
namespace Price
{
float old;
float New;
float standard;
}
float GetPrice(){
float Price.discount; //声明折扣
//计算价格...
return Price.New;
}
}
命名空间可以在方法内,也可以在类型内。声明命空间后,可以单独声明一个变量。
作者:: 绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 ) 汉字名:艾龙, EMAIL:1466519819@qq.com
转载请注明来源: http://www.cnblogs.com/attilax/
1.2. 10. 项目引用Native dll
如今要调用C/C++的程序集,必须查好参数,转化类型,再像这种方式声明:
[DllImport("User32.dll", CharSet = CharSet.Unicode)]public static extern int MessageBox(int h, string m, string c, int type);
为什么不能像引用.NET dll那样引用C/C++写的dll呢,或者像Service Reference那样,增加一个Native Reference的目录,自动生成代理类。
1.3. 10. 项目引用Native dll
如今要调用C/C++的程序集,必须查好参数,转化类型,再像这种方式声明:
[DllImport("User32.dll", CharSet = CharSet.Unicode)]public static extern int MessageBox(int h, string m, string c, int type);
为什么不能像引用.NET dll那样引用C/C++写的dll呢,或者像Service Reference那样,增加一个Native Reference的目录,自动生成代理类。
使用元组的目标是以一种轻量级的方式从一个函数中返回多个值。对元组的良好支持能够消除对out参数的使用,这种参数通常被认为是一种笨重的方案。此外,out参数无法兼容 async/await,因此在许多场景中out参数将变得毫无作用
2. 三、设计面向 面向变量的汇编语言,高级语言出现后,从Pascal/C语言面向过程和变量,到C++以后的面向对象
编程语言发展已经超过半个世纪了,先是面向变量的汇编语言,高级语言出现后,从Pascal/C语言面向过程和变量,到C++以后的面向对象。 C#和Java只是语言特性上有大幅改进,设计思想并没有飞跃。
C#作为最为先进的编程语言,反映了当前语言发展的瓶颈。要有所突破,必须要有新的设计思想,把面向粒度提高到新的层次。
个人分析后认为,未来C#或C#的后继者,会向三个方向发展:
2.1. 1. 面向集合
未来编程语言遇到的业务逻辑将更复杂,对集合处理是业务逻辑的核心内容。LINQ使C#走在业界的前列,然而还有许多问题。
由于历史原因,集合类型太多太乱。支持泛型是必须,我们需要根据可变性、排序性、Hash特性、并发要求等,使用一致的高性能集合类型。这些集合类能够灵活转化,智能地处理扩容、复制等底层操作,且没有LINQ那样无法跨程序域传递的限制。这需要框架和CLR双重支持。
2.2. 2. 面向并发
这个是很自然的方向,除非出现光、生物、量子计算技术的飞跃,不然半导体电路处理器单核极限愈来愈难突破,多核趋势愈演愈烈。未来的编程语言,并发支持必须融入其底层。
还是拿Node.js来说,已经初具此特性,其对IO的访问全部非阻塞的,是从底层支持的异步操作。
对于C#来说,就不只是框架上修修补补,而是CLR的全面支持。async和await出现是个很好的苗头,期待看到更多这样的发展。
2.3. 3. 面向任务(异步
Node.js它通过事件轮询(event loop)来实现并行操作,这只能处理最简单地多任务同步。要实现真正的并发语言,并满足日益复杂的业务逻辑处理,必须对并发的单元-任务进行有力的支持。
.NET对任务有了System.Threading.Tasks下一系列类的支持,但这只是开始。我们需要动态地创建、分解、修改、取消任务,需要方便地获取和控制任务的状态,管理超时和资源,统计任务效率,处理异常。
3. 参考
论C#未来发展 - 小城故事 - 博客园.htm
C#的未来:元组及匿名结构体-IT168 技术开发专区.htm
C#的未来:扩展属性及更多 - 推酷.htm
Atitit .c#的未来新特性计划草案的更多相关文章
- Atitit. Atiposter 发帖机 新特性 poster new feature v7 q39
Atitit. Atiposter 发帖机 新特性 poster new feature v7 q39 V8 重构iocutilV4,use def iocFact...jettyUtil V ...
- Atitit. Atiposter 发帖机 新特性 poster new feature v11 .docx
Atitit. Atiposter 发帖机 新特性 poster new feature v11 .docx 1.1. 版本历史1 2. 1. 未来版本规划2 2.1. V12版本规划2 2.2. ...
- Atitit. Atiposter 发帖机 新特性 poster new feature v7 q39
Atitit. Atiposter 发帖机 新特性 poster new feature v7 q39 V1 初步实现sina csdn cnblogs V2 实现qzone sohu 的发帖 ...
- atitit.ntfs ext 文件系统新特性对比
atitit.ntfs ext 文件系统新特性对比 1. 现代文件系统应该有的特性2 1.1. 恢复Log2 1.2. 压缩2 1.3. Meta ext2 1.4. Fulltextཟsearch ...
- Atitit mac os 版本 新特性 attilax大总结
Atitit mac os 版本 新特性 attilax大总结 1. Macos概述1 2. 早期2 2.1. Macintosh OS (系统 1.0) 1984年2 2.2. Mac OS 7. ...
- Atitit hibernate3 hinernate4 hibernate5新特性attilax总结
Atitit hibernate3 hinernate4 hibernate5新特性attilax总结 1.1. Hibernate3的新特性 1 1.2. hibernate4.1版本中的新特性和h ...
- Atitit js es5 es6新特性 attilax总结
Atitit js es5 es6新特性 attilax总结 1.1. JavaScript发展时间轴:1 1.2. 以下是ES6排名前十的最佳特性列表(排名不分先后):1 1.3. Es6 支持情况 ...
- Atitit.android jsbridge v1新特性
Atitit.android jsbridge v1新特性 1. Java代码调用js并传参其实是通过WebView的loadUrl方法去调用的.只是参数url的写法不一样而已1 2. 三.JAVA ...
- Atitit hre框架v5 新特性 HREv5
Atitit hre框架v5 新特性 HREv5 1. V5新特性 apiurl2="/wrmiServlet";1 2. V1 新特性1 3. V2 新特性 添加php版1 ...
随机推荐
- [BZOJ 1143] 祭祀river
Link:https://www.lydsy.com/JudgeOnline/problem.php?id=1143 Solution: 一道最长反链的模板题 由Dilworth定理可知:最小链覆盖数 ...
- [Contest20171109]函数(lipshitz)
大M正在学习函数的光滑性并对Lipshitz常数非常感兴趣:当一个定义域为$[l,r]$的函数$f$,对于定义域内的任意$x,y$都有$\left|f(x)-f(y)\right|\leq K\cdo ...
- 【后缀数组】【二分答案】【差分】poj1743 Musical Theme
差分消除加减一个值得影响,貌似r二分上界要设成(n-2)/2?为啥? sa求不可重叠最长重复子串 给定一个字符串,求最长重复子串,这两个子串不能重叠.算法分析:这题比上一题稍复杂一点.先二分答案,把题 ...
- Spark1.4安装问题
1)按照<大数据Spark企业级实战>第2章中的方法构建Spark集群,最后发现master可以正常启动,但是worker却都没有启动,原因是不能直接使用在slave模版文件 slaves ...
- css sprite demo
一张图片,用CSS分割成多个小图标. css样式: .icon{ background:url(../images/tabicons.png) no-repeat;width:18px; line-h ...
- python内建datetime模块
datetime 获取当前日期和时间 from datetime import datetime now = datetime.now() print(now) datetime转换为timestam ...
- 如何使用ninja编译系统编译我们的程序?
使用ninja 配置自己的环境来使用ninja 构建程序 Android使用ninja Windows使用 调试 不使用VS 技巧 问题 Ninja的原意是忍者,忍者神龟的忍者.这里被google拿来 ...
- iOS:二维码的扫描
iOS 中二维码的扫描借用#import <AVFoundation/AVFoundation.h> 实现,会用到<AVCaptureMetadataOutputObjectsDel ...
- opengl中VAO,VBO,IBO用法小结(zz) 【转】
http://cowboy.1988.blog.163.com/blog/static/751057982014380251300/ opengl中VAO,VBO,IBO用法小结 这三个玩意全面取代旧 ...
- vim删除文本文件中末行^M
^M字符的来历和作用:在DOS/Windows里,文本文件的换行符为\r\n,而在*nix系统里则为\n,所以DOS/Windows里编辑过的文本文件到了*nix里,每一行都多了个^M.所以^M只是一 ...