转变大家对C#的看法

bigbaldy 2016-05-26 01:49:45
加精
我现在发现很多人对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#现在可以开发除了系统驱动以外的任何程序,在各个领域都有非常成熟的解决方案,并且早已全面开源!
...全文
8210 179 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
179 条回复
切换为时间正序
请发表友善的回复…
发表回复
JimCarter 2016-12-12
  • 打赏
  • 举报
回复
引用 43 楼 bigbaldy 的回复:
看了这么多回复,我想说一下我的观点 我学什么是因为我喜欢什么而不是他能挣多少钱,掌握一门新语言并不难,难的是你能一直保持着最初的兴趣,我从编码中获得快乐,这对于我来讲更有意义
顶楼主,喜欢一门语言,并 不是看他能给我挣多少钱
shanNancy 2016-09-12
  • 打赏
  • 举报
回复
楼主带带我 我是刚毕业工作的渣渣妹纸
qq_31952777 2016-09-05
  • 打赏
  • 举报
回复
C#真的有怎么差么,我觉得还是蛮公司用啊
尹大人 2016-07-27
  • 打赏
  • 举报
回复
看着这么多大牛,我都不敢说话了。一个个好像都觉得自己多NB似的,张口闭口说这个语言不行了,要倒了;那个公司不行,快都散了吧。 干着搬砖的活,操着领导人的心。
hz890 2016-06-15
  • 打赏
  • 举报
回复
引用 179 楼 hz890 的回复:
[quote=引用 178 楼 hz890 的回复:] [quote=引用 134 楼 bigbaldy 的回复:] [quote=引用 131 楼 hz890 的回复:] 忠信自己选择的技术很有必要,只要这份钟爱与自信没有蒙蔽自己的理智,没有被扭曲成盲目的自大和狂妄,便无可厚非。毕竟,钻研技术离不开执着与激情。 目前的.NET亟需正名,这不难理解。但正名之前需要证明,后面的证明需要具有说服力的事实作依据。 经过与.NET的长期对决,Java已经确立了压倒性的优势,PC桌面应用、移动应用、服务器应用乃至嵌入式开发处处可见其踪影,更重要的是如此的广泛应用,已经最大限度地摆脱了各种束缚与捆绑,实为可贵。 这样的结果不是人为意志的体现,而是市场的必然选择。 现在断言孰优孰劣,或许为时尚早,只愿.NET能知耻后勇,我等拭目以待……
总有人说应该找找自身的毛病,可我想说MS已经找了,而且在改了,还想怎样?[/quote] .NET的當務之急應該是市場問題。 倘若有朝一日能夠擁有像如今Java一般的市場,那所謂的看法問題或許就可以忽略。 實際上,我更想說的是想要改變看法,請先扭轉市場,而不是把順序反過來。 Java的市場份額居高不下,即便不是人心所向,也會是大勢所趨(就像當年清軍剛入關後的局面)。 相對於所謂的市場份額,.NET的經營者應該還是更關心其盈利,這當然也無可厚非,只是照此發展,日後使用.NET的群體自然還是相對的少數。 就像https://msdn.microsoft.com/zh-cn/magazine/mt694084#rd/裡面所言的一段話,“最后,.NET Core 会成为“付费”的高性能实现。”這就與我們的預期大相徑庭,如同Android和iOS,前者更為大眾化,但後者一樣能夠獲利,但多數人的理念還是會傾向於前者,這似乎也預示著.NET未來的一種走勢。[/quote] 不好意思,删除2个别字.......[/quote] 实在抱歉,还要再把引用的链接地址改一下,之前的链接似乎打不开了。
hz890 2016-06-15
  • 打赏
  • 举报
回复
引用 178 楼 hz890 的回复:
[quote=引用 134 楼 bigbaldy 的回复:] [quote=引用 131 楼 hz890 的回复:] 忠信自己选择的技术很有必要,只要这份钟爱与自信没有蒙蔽自己的理智,没有被扭曲成盲目的自大和狂妄,便无可厚非。毕竟,钻研技术离不开执着与激情。 目前的.NET亟需正名,这不难理解。但正名之前需要证明,后面的证明需要具有说服力的事实作依据。 经过与.NET的长期对决,Java已经确立了压倒性的优势,PC桌面应用、移动应用、服务器应用乃至嵌入式开发处处可见其踪影,更重要的是如此的广泛应用,已经最大限度地摆脱了各种束缚与捆绑,实为可贵。 这样的结果不是人为意志的体现,而是市场的必然选择。 现在断言孰优孰劣,或许为时尚早,只愿.NET能知耻后勇,我等拭目以待……
总有人说应该找找自身的毛病,可我想说MS已经找了,而且在改了,还想怎样?[/quote] .NET的當務之急應該是市場問題。 倘若有朝一日能夠擁有像如今Java一般的市場,那所謂的看法問題或許就可以忽略。 實際上,我更想說的是想要改變看法,請先扭轉市場,而不是把順序反過來。 Java的市場份額居高不下,即便不是人心所向,也會是大勢所趨(就像當年清軍剛入關後的局面)。 相對於所謂的市場份額,.NET的經營者應該還是更關心其盈利,這當然也無可厚非,只是照此發展,日後使用.NET的群體自然還是相對的少數。 就像http://blog.jobbole.com/100194/裡面所言的一段話,“最后,.NET Core 会成为“付费”的高性能实现。”這就與我們的預期大相徑庭,如同Android和iOS,前者更為大眾化,但後者一樣能夠獲利,但多數人的理念還是會傾向於前者,這似乎也預示著.NET未來的一種走勢。[/quote] 不好意思,删除2个别字.......
hz890 2016-06-14
  • 打赏
  • 举报
回复
引用 134 楼 bigbaldy 的回复:
[quote=引用 131 楼 hz890 的回复:] 忠信自己选择的技术很有必要,只要这份钟爱与自信没有蒙蔽自己的理智,没有被扭曲成盲目的自大和狂妄,便无可厚非。毕竟,钻研技术离不开执着与激情。 目前的.NET亟需正名,这不难理解。但正名之前需要证明,后面的证明需要具有说服力的事实作依据。 经过与.NET的长期对决,Java已经确立了压倒性的优势,PC桌面应用、移动应用、服务器应用乃至嵌入式开发处处可见其踪影,更重要的是如此的广泛应用,已经最大限度地摆脱了各种束缚与捆绑,实为可贵。 这样的结果不是人为意志的体现,而是市场的必然选择。 现在断言孰优孰劣,或许为时尚早,只愿.NET能知耻后勇,我等拭目以待……
总有人说应该找找自身的毛病,可我想说MS已经找了,而且在改了,还想怎样?[/quote] .NET的當務之急獲取應該是市場問題。 倘若有朝一日能夠擁有像如今Java一般的市場,那所謂的看法問題或許就可以忽略。 實際上,我更想說的是想要改變看法,請先扭轉市場,而不是把順序反過來。 Java的市場份額居高不下,即便不是人心所向,也會是大勢所趨(就像當年清軍剛入關後的局面)。 相對於所謂的市場份額,.NET的經營者應該還是更關心其盈利,這當然也無可厚非,只是照此發展,日後使用.NET的群體自然還是相對的少數。 就像http://blog.jobbole.com/100194/裡面所言的一段話,“最后,.NET Core 会成为“付费”的高性能实现。”這就與我們的預期大相徑庭,如同Android和iOS,前者更為大眾化,但後者一樣能夠獲利,但多數人的理念還是會傾向於前者,這似乎也預示著.NET未來的一種走勢。
月影 2016-06-12
  • 打赏
  • 举报
回复
引用 172 楼 fanliang11 的回复:
你们知道JAVA的工资为什么高工资多吗?是因为开发的系统烂的要死,要高水平的工程师去重构。
有一定道理。坑多的系统,会填坑的开发人员工资就很高。这就是.net程序员不值钱的原因。
qqq526483501 2016-06-12
  • 打赏
  • 举报
回复
其实,c#发展听好的,我用过c++ ,java,C#, java其实是比较耗内存的, c#比java灵活多了,在函数指针方面(在c#中叫委托)比java好很多,方便很多,感觉运行效率比java高, 现在游戏开发,很多用unity,就是要用c#开发, 现在很多游戏服务器也开始用C#开发,考虑开发效率与运行效率,
爱睡觉的阿狸 2016-06-12
  • 打赏
  • 举报
回复
引用 176 楼 yzf86211861 的回复:
[quote=引用 30 楼 m2200 的回复:] 在CSDN上,感觉c#、.net版的牛人不要太多,上到积分第一的那位net_lover,还有sp1234、caozhy等等等,感觉CSDN的C#方面的高人太多了。 你说java板块吧,真没见到什么牛人。
那是因为JAVA 牛逼的 基本不来这人 他们又自己论坛[/quote] 什么论坛?
yzf86211861 2016-06-12
  • 打赏
  • 举报
回复
引用 30 楼 m2200 的回复:
在CSDN上,感觉c#、.net版的牛人不要太多,上到积分第一的那位net_lover,还有sp1234、caozhy等等等,感觉CSDN的C#方面的高人太多了。 你说java板块吧,真没见到什么牛人。
那是因为JAVA 牛逼的 基本不来这人 他们又自己论坛
ctr54188 2016-06-08
  • 打赏
  • 举报
回复
来看看大神。。。。小白路过
fanliang11 2016-06-08
  • 打赏
  • 举报
回复
你们知道JAVA的工资为什么高工资多吗?是因为开发的系统烂的要死,要高水平的工程师去重构。
fanliang11 2016-06-08
  • 打赏
  • 举报
回复
世界上只有两种语言 天天被人喷的语言,根本没人用的语言。不要听楼上的乱讲,.NET发展挺好,我所知道的,传统行业转型互联网,大多选择.NET.而且我们公司作为行业龙头企业,子公司,总公司全是.NET开发的系统。为什么选择.NET,是因为前期用JAVA开发的系统失败了。而且用JAVA开发系统运行慢,开发的周期长,动不动就要搭建分布式集群去分摊服务器压力。
月影 2016-06-08
  • 打赏
  • 举报
回复
引用 168 楼 starfd 的回复:
[quote=引用 166 楼 qq_35151537 的回复:] [quote=引用 165 楼 starfd 的回复:] [quote=引用 163 楼 qq_35151537 的回复:] 再发展三年,NET连最后一点机会都会消失了。。。。。三年,在IT业里是什么概念。INTEL,AMD的CPU都换了二代甚至三代了。DDR4估计都冲128G单条4000MZH了。基于JAVA的智能产品在淘宝上价格都山寨化了。
你举硬件例子的时候,你知道 摩尔定律 吗?我从没听说过摩尔定律能用在软件上,至于你一直吹得JAVA智能产品,我实在是没想出哪种智能产品只能是JAVA做的 另外你知道U3d吗?你知道它现在的市场占有率吗?你知道它开发基于哪几种语言的吗?很遗憾,没有JAVA,而且我还知道JAVA下也有个和U3d类似的产品,但很遗憾被U3d收购了,而U3d又被微软收购了,而微软又将这个JAVA产品停止了,人家微软就是跟你玩有钱人的游戏,你能如何? 还有,你觉得java能直接跟硬件交互吗?照你这奇葩理论,宏汇编不是应该一统江湖吗?还有后面的C,C++,JAVA毛事?[/quote] 你的话还真是奇葩。。。你现在是将概念反转,然后产生一些言左言右。我一直说的是:JAVA可以在一个链条里做到无死角。NET有死角。而不是说,这条链条里只能JAVA能做,其它的不能做。 那你可以试试 51单片机+NET来实现你的所谓的智能产品和企业管理。没有人会阻止你么做的。 说得MS好象还是以前MS一样,1比技术,比不过。2比挖象 ,还不倒。3比流血 。。。。放在现在这个互联网++和开源的时代,微软的这些招全部失灵了。就剩下一招:等死。微软的NET。在和JAVA的对招中,只能出现: A.三年后死 。 B.五年后死。 C。七年后死 。 至于你说的什么JAVA可以硬件打交互。。。JAVA当然不能,但LINUX能,安卓能。。。。JAVA能和安卓打交互就成了。不需要深入到硬件层。不过,你说得给人感觉好象NET可以直接操作MOV一样。说得好象原生的NET可以运行在安卓上一样。说得好象现在嵌入式用的是WIN10,WINCE一样 。。。。 你就不要在这里误导那些刚毕业的小弟小妹们了,人家不想成为微软的陪殡品,在一个可以选择正确的年代却选择了一个错误的语言来害人家至少未来十年。[/quote] 你一直在死角死角,我没看到NET的死角在哪,如果有,你也明确的指出来 你说到了微软的招数,的确,如果这招数行的话,早就没JAVA的事了,这的确是微软策略上的失败,而且是一错再错,鲍尔默那几年,坑了无数的NET开发,这都是事实,没人否认 至于你说的,NET可以依赖Mono,jexus在Linux上运行,C#可以依赖Mono在Andorid,IOS上运行,U3d就是基于Mono,至于MOV什么的,你知道NET其实最终都编译成IL吗? 你一直原生原生,运行在android上的也不能算是原生JAVA吧,如果是的话,我相信Oracle会很开心 而我针对你的问题是,你一直说JAVA智能,我的问题是什么智能是只能JAVA做的? 不知道是谁一直在那里换概念,你应该像我一样,指出对方言语中的问题,而不是歪来歪去,顾左右而言其它[/quote] 楼上的楼上,java怎么就无死角了?java能开发ios程序吗?
bigbaldy 2016-06-06
  • 打赏
  • 举报
回复
引用 131 楼 hz890 的回复:
忠信自己选择的技术很有必要,只要这份钟爱与自信没有蒙蔽自己的理智,没有被扭曲成盲目的自大和狂妄,便无可厚非。毕竟,钻研技术离不开执着与激情。 目前的.NET亟需正名,这不难理解。但正名之前需要证明,后面的证明需要具有说服力的事实作依据。 经过与.NET的长期对决,Java已经确立了压倒性的优势,PC桌面应用、移动应用、服务器应用乃至嵌入式开发处处可见其踪影,更重要的是如此的广泛应用,已经最大限度地摆脱了各种束缚与捆绑,实为可贵。 这样的结果不是人为意志的体现,而是市场的必然选择。 现在断言孰优孰劣,或许为时尚早,只愿.NET能知耻后勇,我等拭目以待……
总有人说应该找找自身的毛病,可我想说MS已经找了,而且在改了,还想怎样?
bigbaldy 2016-06-06
  • 打赏
  • 举报
回复
引用 130 楼 qq_35151537 的回复:
脱离MS,让自己走得更远,更开心 ,更专业 !
兄弟,脱离MS即更专业,我只能说您真“专业”
bigbaldy 2016-06-06
  • 打赏
  • 举报
回复
简单概括下: C#失败原因:闭源、付费、不跨平台 Java成功原因:开源、免费、跨平台 15年以前,.net这块一直做的不好,但社区活跃度还能排进全球变成语言排行的前三,而15年以后,微软已经开始大力朝向开源、免费、跨平台进军,那么我真不知道有什么理由不看好.net将来的发展?有人说太晚了,我想说带有这些个毛病都能冲进前三,改了这些毛病难道会更差了?绝不可能,就算是真的太晚了,那也是逐渐往好的方向发展
  • 打赏
  • 举报
回复
引用 167 楼 qq_35151537 的回复:
在移动和嵌入式的操作系统中,谁是这个市场的主角 ? 只要了解这个就可以了。不要再搞混水而误导人。所有人想要的是:这个技术适合现在,适合未来的十年,这个技术让我不在A公司做,很快就可以选择B公司,这个技术能让刚出校园的人在未来五年里有钱讨个老婆,能供一个60平的楼,还可以给父母养老。。。。。。你说的那些这么高大上,俺们毕竟是吊丝层,离我太远。。。。
如果你所谓的移动仅仅是互联网应用的移动的话,那还真是原生android、ios或者混合编程html5、js的天下,但也没java的事吧,当然我不否认andorid和java之间的关系,这边没有谁来忽悠谁,至于5年供房,好吧,JAVA真能做到,我无话可说,但据我所知前几年最热、工资最高的IOS都没能跑赢中国的奇葩房价 至于嵌入式,我从来没听过JAVA占据了嵌入式的主导地位。如果有,你举出例子来 另外,移动这个市场微软败了,但在云服务市场并没败,甚至已经严重威胁到了AWS的地位,而且azure对NET天生有着大量的支持,当然国内都是然并卵的事情,进都进不来的,算个啥
  • 打赏
  • 举报
回复
引用 166 楼 qq_35151537 的回复:
[quote=引用 165 楼 starfd 的回复:] [quote=引用 163 楼 qq_35151537 的回复:] 再发展三年,NET连最后一点机会都会消失了。。。。。三年,在IT业里是什么概念。INTEL,AMD的CPU都换了二代甚至三代了。DDR4估计都冲128G单条4000MZH了。基于JAVA的智能产品在淘宝上价格都山寨化了。
你举硬件例子的时候,你知道 摩尔定律 吗?我从没听说过摩尔定律能用在软件上,至于你一直吹得JAVA智能产品,我实在是没想出哪种智能产品只能是JAVA做的 另外你知道U3d吗?你知道它现在的市场占有率吗?你知道它开发基于哪几种语言的吗?很遗憾,没有JAVA,而且我还知道JAVA下也有个和U3d类似的产品,但很遗憾被U3d收购了,而U3d又被微软收购了,而微软又将这个JAVA产品停止了,人家微软就是跟你玩有钱人的游戏,你能如何? 还有,你觉得java能直接跟硬件交互吗?照你这奇葩理论,宏汇编不是应该一统江湖吗?还有后面的C,C++,JAVA毛事?[/quote] 你的话还真是奇葩。。。你现在是将概念反转,然后产生一些言左言右。我一直说的是:JAVA可以在一个链条里做到无死角。NET有死角。而不是说,这条链条里只能JAVA能做,其它的不能做。 那你可以试试 51单片机+NET来实现你的所谓的智能产品和企业管理。没有人会阻止你么做的。 说得MS好象还是以前MS一样,1比技术,比不过。2比挖象 ,还不倒。3比流血 。。。。放在现在这个互联网++和开源的时代,微软的这些招全部失灵了。就剩下一招:等死。微软的NET。在和JAVA的对招中,只能出现: A.三年后死 。 B.五年后死。 C。七年后死 。 至于你说的什么JAVA可以硬件打交互。。。JAVA当然不能,但LINUX能,安卓能。。。。JAVA能和安卓打交互就成了。不需要深入到硬件层。不过,你说得给人感觉好象NET可以直接操作MOV一样。说得好象原生的NET可以运行在安卓上一样。说得好象现在嵌入式用的是WIN10,WINCE一样 。。。。 你就不要在这里误导那些刚毕业的小弟小妹们了,人家不想成为微软的陪殡品,在一个可以选择正确的年代却选择了一个错误的语言来害人家至少未来十年。[/quote] 你一直在死角死角,我没看到NET的死角在哪,如果有,你也明确的指出来 你说到了微软的招数,的确,如果这招数行的话,早就没JAVA的事了,这的确是微软策略上的失败,而且是一错再错,鲍尔默那几年,坑了无数的NET开发,这都是事实,没人否认 至于你说的,NET可以依赖Mono,jexus在Linux上运行,C#可以依赖Mono在Andorid,IOS上运行,U3d就是基于Mono,至于MOV什么的,你知道NET其实最终都编译成IL吗? 你一直原生原生,运行在android上的也不能算是原生JAVA吧,如果是的话,我相信Oracle会很开心 而我针对你的问题是,你一直说JAVA智能,我的问题是什么智能是只能JAVA做的? 不知道是谁一直在那里换概念,你应该像我一样,指出对方言语中的问题,而不是歪来歪去,顾左右而言其它
加载更多回复(159)

7,774

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧