你误解 .net 了吗?
我现在发现很多人对C#还存在很大的误解,例如C#是完全封闭的,C#不能跨平台,C#性能很差,C#不支持指针等等,持以上观点的人非常多,甚至最近看到的国内某机构对开发语言的统计中还写着C#不跨平台,不开源,所以想在此普及一下常识。
1.C#是完全开源的,不但开源,而且微软开源的库都是基于MIT许可证的,也就是说,你可以免费使用并修改代码,修改后可以闭源,只需保留作者信息即可,这可以说是最宽松的开源许可
2.C#是完全可以跨平台的,mono现在已经非常成熟,随着去年微软对.net的全面开源,mono已经采用了大量微软官方的源码,完全实现最新的.net framework4.6,功能非常全面。在游戏领域Unity3d,移动开发领域Xamarin,都是基于mono的,都是完全跨平台的,Unity3d更是支持26种操作系统,现在Linux上部署asp.net网站也更加方便,连mono都不需要安装就可以运行。而且跨平台不止mono,还有微软自己的.net core,Unity3d更是开发出了IL2CPP这种逆天的东西,以后C#都可以摒弃虚拟机直接运行在所有平台上了,所以说跨平台是肯定的,而且跨得很好!
3.C#的性能也是非常好的,我专门做过测试,如果对比基础数学运算与C++完全一样,图形方面也能达到C++的70%,看.net库底层代码是大量的指针和原生函数调用,性能自然没问题,关于内存占用,你用了其他虚拟机语言后再来评论C#不迟
4.总有人问C#调用C++dll的各种问题,尤其是类型转换上,我想说,C#是支持指针的,你C++怎么写,C#就怎么写即可,这有什么难的吗?而且很多需要高性能的地方,也可以用指针实现,有些地方用了指针后性能提升能超过1000倍,所以指针的使用也很重要的,但竟然还是有这么多人不知道C#有指针的存在!
5.单独说下Xamarin,现在Xamarin已经完全开源免费,人们开始想尝试使用Xamarin,但总觉得资料少,甚至有人说只能搜到个helloworld的示例,其他都没有,如果开发比较复杂的app就不行了,但我想说,首先Xamarin官网上有大量的资料,非常全面,IO,数据库,网络通信,界面开发等等都有很详尽的教程,nuget上60多万个库,足够你做出一个像样的APP,其次,Xamarin是提供给你直接调用java和OC方法的方式的,使用也非常简便,再次,你真的需要某些特殊的东西,搜索Xamarin找不到相应的解决方案(这里拿android举例),那么好,直接搜android的解决方案即可,由于android的所有API Xamarin都是实现了的(早在4月8日就已经支持Android N了),所以你直接把要用的java代码粘过来即可,类库名称,函数名称,参数类型,各类东西都没变,只有很少的一部分语法,例如属性和foreach等需要稍微改改,就可以直接用java的代码,界面就更不用说了,唯一需要变的就是.xml改为.axml,剩下的都不用改,我真心想知道有什么是不能做的呢?Xamarin只不过给你多增加了一套C#的API,例如你既可以用System.IO.StringBuilder也可以用Java.Lang.StringBuilder,对于开发来说与用java做Android原生开发没有任何区别,所以说Android的资料可以直接拿来用,而Xamarin只是让你多了一种选择而已,在此之上业务逻辑部分iOS与android可以通用,甚至用Xamarin.Form让你的界面也可以跨平台
说了这么多,我只希望人们对C#的认识能够真正的改变,还是那句话,C#现在可以开发除了系统驱动以外的任何程序,在各个领域都有非常成熟的解决方案,并且早已全面开源!
你误解 .net 了吗?的更多相关文章
- 【原】谈谈对Objective-C中代理模式的误解
[原]谈谈对Objective-C中代理模式的误解 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 这篇文章主要是对代理模式和委托模式进行了对比,个人认为Objective ...
- .NET开源进行时:消除误解、努力前行(本文首发于《程序员》2015第10A期的原始版本)
2014年11月12日,ASP.NET之父.微软云计算与企业级产品工程部执行副总裁Scott Guthrie,在Connect全球开发者在线会议上宣布,微软将开源全部.NET核心运行时,并将.NET ...
- 被误解的MVC和被神化的MVVM(转)
转载自:http://www.infoq.com/cn/articles/rethinking-mvc-mvvm 原文作者:唐巧 被误解的 MVC MVC 的历史 MVC,全称是 Model View ...
- Atitit. 构造ast 语法树的总结attilax oao 1. Ast结构树形12. ast view (自是个160k的jar )22.1. 多条语句ast结构22.2. 变量定义 int b,c; 的ast结构22.3. 方法调用meth1(a=1,b=2,c=3); 的ast结构23. 误解的问题33.1. 语法书子能是个二叉树,实际上多叉树越好..33.2. 非要不个ast放到个s
Atitit. 构造ast 语法树的总结attilax oao 1. Ast结构树形1 2. ast view (自是个160k的jar )2 2.1. 多条语句ast结构2 2.2. 变量定义 in ...
- 关于对CSS尺寸单位'em'的长期误解
一直以来认为'em'是相对于父元素的字体大小. 直到今天学习移动WEB开发,重新复习css的尺寸大小时,惊奇发现:对em深深的误解了!!! 在CSS官网对em的解释实例是: a. h1{line-he ...
- 关于分布式事务的一个误解:使用了TransactionScope就一定会开启分布式事务吗?
背景: 事务是数据库管理系统的一个基本概念,事务具有四个基本特点,即ACID:原子性(Atomicity).一致性(Consistency).隔离性(Isolation)和持久性(Durability ...
- CSS魔法堂:你一定误解过的Normal flow
前言 刚接触CSS时经常听到看到一个词"文档流",那到底什么是"文档流"呢?然后会看到"绝对定位和浮动定位能脱离文档流",从这句可以看到文 ...
- 对Java垃圾回收最大的误解是什么
当 我还是小孩的时候,父母常说如果你不好好学习,就只能去扫大街了.但他们不知道的是,清理垃圾实际上是很棒的一件事.可能这也是即使在Java的世界中, 同样有很多开发者对GC算法产生误解的原因--包括它 ...
- C++对析构函数的误解(转)
C++析构前言 析构函数在什么时候会自动被调用,在什么时候需要手动来调用,真不好意思说偶学过C++…今日特此拨乱反正. C++析构误解正文 对象在构造的时候系统会分配内存资源,对一些数据成员进行初始化 ...
随机推荐
- NGINX高性能Web服务器详解(读书笔记)
原文地址:NGINX高性能Web服务器详解(读书笔记) 作者:夏寥寥 第4章 Nginx服务器的高级配置 4.1 针对IPv4的内核7个参数的配置优化 说明:我们可以将这些内核参数的值追加到Linu ...
- C# 读取在存储过程多结果集
--SQL Server 测试环境搭建: Create database Test; go USE [Test] GO if OBJECT_ID('Tab','U') is not null drop ...
- Servlet/JSP-03 HttpServlet
一. GenericServlet GenericServlet本身是一个抽象类,并且实现了Servlet和ServletConfig接口 其在内部定义了一个私有的ServletConfig类型的变量 ...
- ubuntu16.04下vim安装失败
问题? 重装了ubuntu系统,安装vim出现了以下问题: sudo apt-get install vim 正在读取软件包列表... 完成 正在分析软件包的依赖关系树 正在读取 ...
- 仿哔哩哔哩应用客户端Android版源码项目
这是一款高仿哔哩哔哩安卓客户端,跟官方网的差不多吧,界面也几乎是一样的,应用里面也加了一些弹出广告,大家可以参考一下吧,安装测试包在源码文件那里,大家可以多多参考一下. 哔哩哔哩弹幕网是国内知名的弹幕 ...
- emacs 新手笔记(三) —— 为 emacs 做一点简单的定制
ilocker:关注 Android 安全(新入行,0基础) QQ: 2597294287 在 emacs 启动时,会加载 ~/.emacs 文件.在该文件中编辑一些 lisp 代码,是一种最为简单的 ...
- [转]菜鸟程序员之Asp.net MVC Session过期异常的处理
本文转自:http://www.cnblogs.com/JustRun1983/p/3377652.html 小赵是刚毕业的计算机专业方面的大学生,4年的大学时间里面,他读过了很多编程方面的数据,也动 ...
- [Top-Down Approach] Assignment 1: WebServer [Python]
Today I complete Socket Programming Assignment 1 Web Server Here is the code: #!/usr/bin/python2.7 # ...
- 初步了解Entity Framework
来源:http://www.cnblogs.com/Wayou/archive/2012/09/20/EF_CodeFirst.html Entity Framework的全称是ADO.NET Ent ...
- 学生管理系统<分层开发>
一:分层架构 搭建DAL层(数据访问层).UI层(表示层).BLL层(业务逻辑层)以及Model层(实体层) 各层的引用关系: DAL.UI.BLL层引用Model层 UI层引用BLL层 BLL层引用 ...