C#的三大难点之前传:什么时候应该使用C#?

本文探讨了在Windows平台上开发客户端应用时选择C#的原因,包括Visual Studio的强大支持、无需额外安装运行环境、简洁的UI界面开发及灵活的语法特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

相关文章:

C#的三大难点之前传:什么时候应该使用C#?
C#的三大难点之一:byte、string与StringBuilder
C#的三大难点之二:托管与非托管
C#的三大难点之三:消息与事件
​PS:后两篇等我找到了工作再写(╯‵□′)╯︵┻━┻

什么时候应该使用C#?​

如果我把题目起成:C#比Java好在哪里,或者是C#比C++好在哪里,估计又会引发一轮大撕逼。不过这样没有任何意义。
语言最终只是实现目的的工具​。使用那种语言,最终还要看具体的要求,以及你对哪种环境更熟悉。
但是,在某种情况下,我仍然更推荐C#语言​。
这种情况就是,当​你开发只基于windows平台的客户端的时候。
另外,似乎当你开发基于windows server的服务端程序时,C#也是一个很好的选择,不过我没怎么搞过服务端,就不做深入讨论了。
为什么开发windows平台的客户端的时候要考虑选择C#?在我看来,至少有以下几点理由:

1、可以使用全宇宙最好用的IDE:Visual Studio

要说哪种语言是全宇宙最好的语言,​肯定还会争论不休;但要说哪个IDE是全宇宙最好的IDE,我想应该争论不大了。抱着微软亲爹的大腿,Visual Studio的易用性,要远远超越其它IDE。

2、不需要额外安装运行环境​

类似JAVA的运行需要JRE环境,windows下C#的运行也需要.net framework运行环境​。但是,你并不需要在每一台需要运行C#的电脑上安装一遍——windows7已经自带了.net framework 3.5, windows8已经自带了.net framework 4。你只需要选择合适的framework版本,即可直接在用户的电脑上运行,与编译型语言相比,用户感受不到任何差别。
前两个优点​很简单,也很容易理解,这里不再细说。稍微休息一下,后面的两个优点,内容就比较多了。



好了,由于下面两个特点更为复杂,我会辅以图片或代码作为例证。

3、编写UI界面,C#的代码更为干净。

为了说明这一点。我们用MFC的界面开发和C#的界面开发做一下对比。
首先,简单科普一下什么是MFC:MFC也是Visual Studio提供的,可以用来做界面开发的一种方案。编程语言使用C++。早些时候,使用MFC方案的客户端比较多,现在已经很少看到有人使用了。​
首先,我们试着用MFC新建一个默认的UI程序
首先是让人眼花缭乱的各种选项:
选项
后面还有更多的选项,让你选择是否包含菜单栏等等,我就不一一贴上来了。,有兴趣的同学可以自己新建一个项目试试。
然后是建立项目之后默认生成的文件列表:
文件列表
我新建的是“单个文档”,如果上面的选项中选择“基于对话框”的话,文件列表会更简单一些。
但在MFC中,这样一个单个文档的程序,被分为文档(doc)和视图(view)两个部分,再加上框架(frame),复杂的结构着实难道了不少人。
当我初次接触MFC时,我的反应是:卧槽,写个客户端怎么这么难?当个码农不容易啊!
当然,现在我也觉得当个码农不容易,不过已经不是难在这种地方了。​
顺便,我再问一个问题:程序的main()函数入口在哪呢?
这是MainFrm.cpp包含的内容,你能猜出来程序启动的过程中,依次执行了哪些函数吗?
MainFrm.cpp
当年为了讲清楚这个问题,还专门有一本书:《深入浅出MFC》​。当年写客户端,似乎真的不是那么容易的一件事情。
好在这些痛苦的事情都成为了过去,如今我除了在一些工业控制公司见到老的客户端程序仍然使用MFC做维护,大部分客户端都不再使用这一技术了。

下面,我们再用C#新建一个客户端程序。
首先,C#新建时已经不需要勾选复杂的选项了,直接就可以新建好项目。
看看C#的文件列表,是不是清爽了很多?
C#文件列表
​我们再看看Program.cs和Form1.cs中的代码:
Program.cs​​
Form1.cs​​
我顺便再问你,main()函数在哪里,你会答不上来吗?​​
与MFC相比,是不是觉得很干净,有没有觉得人生还是很美好的?

4、C#的写法更为随意。

我们先看这样一个例子:

class Test
{
     public string TestString { get; set; }
}

对直接写个get和set的写法是不是很陌生?实际上,上面的写法等效于:

class Test
{
     private string _string;
     public string TestString {
          get { return _seconds; }
          set { _seconds = value; }
     }
}

那么,为什么不直接用

class Test
{
     prublic string TestString;
}

呢?

再看另一个例子:

delegate int del(int i);
static void Main(string[] args)
{
     del myDelegate = x => x * x;
     int j = myDelegate(5); //j = 25
}

“=>”的用法是不是也很陌生?
这个用法叫Lambda。

再看这个:

var result = from c in Customers
     where c.City == "Boston"
     orderby c.LastName descending
     select new { c.FirstName, c.LastName, c.Address };

这中类似SQL的用法叫LINQ。
这么多奇怪的用法,有没有一种眼花缭乱的感觉?C#的另一个特性就在于,写法非常随意,你可以用很短的语句表达出完整的效果,但这个特性的缺点就在于,对于新手而言,初次读一段C#代码,可能会失去读C或者JAVA的那种熟悉感。
你愿意学习这些新特性吗?不愿意学习的话,传统的写法也可以达到同样的效果,你愿不愿意守着过去的那些规矩呢?

总结

如果你只开发基于Windows平台的客户端程序,我建议你考虑选择C#作为开发语言。
与C++,JAVA不同,Visual Studio更为好用,且不需要在Windows平台安装额外的运行环境。此外,C#的界面代码更为干净,写法也更为随意。
最后再补充一点。如果你还是在校学生的话,选择C#编程还需要一层考虑:校招中,C#的岗位是极少的。尤其是国内​大的互联网公司,基本上以C和JAVA为主。使用C#编程的经验对找工作没有什么太大的帮助。
在你使用C#之前,请谨慎对上述弊端进行权衡!​


点击打开本文转载链接

这本书是什么? * 这本电子书严格来说是我复习C#基础知识来的,我从09年初开始使用asp.net进行b/s开发,之前一直使用asp。在实际开发中深感C#的强,也深深感到自身基础知识的欠缺,因此重新从头开始学习C#,在学习的过程中最主要是借助Illustrator C# 2008(译名:插图详解C#2008或C#图解教程)这本书,(准确讲,这本电子书可以说是我对Illustrator C# 2008的读书笔记)同时查阅了msdn及许多相关的资料 ,前后近两个月;但本系列尚未完成,目前还有多线程及涉及C# 3.0中的新知识没有完成。 * 这本书有什么? * 本电子书一共21节,主要包含本人实际项目中自我感到难点的东西,如委托、事件、泛型等,进行了个人的一些总结的归纳,最后附一个我做的WinForm程序。 * 这本书适合哪些人? * 这本书内容其实很少,你可以很快就可看完;内容也只是十分简陋,主要是我本人在实现应用的体会的难点问题的总结。再加上我本人技术水平十分有限,因此我要提前声明:由于内容简略,不适合新手,以免误人子弟;内容浅显,更不适合老鸟。我本人也是抱着交流学习的目的将它发布的,欢迎家针对本书内容的问题进行交流探讨。 * 最后,极力向家推荐Illustrator C# 2008,不要被它的名字迷惑,认为它只是一本入门级的读物;作者是技术专家,对C#有极其深刻的见解;语言十分流畅,书中的插图十分形象易懂,从头到尾内容循序渐进,层层递进,尤其对内存分配有着详尽的描述。无论是新手还是老手,绝对值得一读。中文版翻译也还可以,如果英文好的话建议直接阅读英文版。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值