日期:2014-05-18  浏览次数:20810 次

(NGU)100分求解简单C#题
1)为什么文件读写分文本文件和二进制文件?二进制文件适用于哪些方面?是不是用二进制方式读取文件,效率更高?

2)C#中有没有提供“排序”类,比如提供了冒泡,选择,插入,快速,基数,桶...

3)新建一个项目后,会自动生成.csproj和.sln后缀的文件,是不是要打开一个项目文件时打开.csproj,要打开多个项目文件时,打开sln。

4)我知道textBox1换行应该用"\r\n", 可为什么richTextBox用"\n"就可以换行呢?谁来解释下?

------解决方案--------------------
我知道的不多,也不知道对不对.做.NET的时候也没关心理论的东西.
1.二进制文件容易穿过防火墙.
2.排序类我没见过,估计是没有.但绝对可以从外部组件中的到,因为肯定有人提供这种组件.不过可能要收费
3.你说的没错
4.这是平台本身的问题,估计得问盖茨.
------解决方案--------------------
1)为什么文件读写分文本文件和二进制文件?二进制文件适用于哪些方面?是不是用二进制方式读取文件,效率更高? 
读写文件分文本和二进制仅仅为了方便,理论上二进制文件可以完成所有功能;
二进制文件适合对存储要求更高的应用,因为它的冗余度可以最小;
是不是二进制读取效率高,无法考证,这个取决于实现。

2)C#中有没有提供“排序”类,比如提供了冒泡,选择,插入,快速,基数,桶... 
C#中没有排序类,但是有排序辅助类,很多集合类都提供Sort,Search等方法

3)新建一个项目后,会自动生成.csproj和.sln后缀的文件,是不是要打开一个项目文件时打开.csproj,要打开多个项目文件时,打开sln。
.csproj后缀文件是C#工程文件,每一个工程对应一个工程文件;sln文件是Solution文件,每一个Solution可以对应很对个工程。

4)我知道textBox1换行应该用"\r\n", 可为什么richTextBox用"\n"就可以换行呢?谁来解释下?
因为在Windows下,\r表示输入回车,显然,回车不一定必然是换行;\n就是换行。
在TextBox中,从UI输入Enter是系统自动处理,会变成\r\n,从Text属性赋值,这里会根据系统验证当前的换行是什么(通常为\r\n),如果不是\r\n认为不是换行,Edit显示时会过滤调。
RichTextBox的内部实现和TextBox差别很大,内部处理\n就直接认为回车,如果是\r\n,它同样显示回车。
------解决方案--------------------
1, 2进制文件长度更小(相同信息量),但是文本文件更方便.而且具有可读性.
2, 有排序类, 不过并不是说提供什么冒泡插入之类的, 这没有意义,排序类存在的意义是高效率地排序好而不是用多种方式排,我们类的作用是输出正确结果执行正确操作而不是提供好多种方式来输出相同结果. 排序经常使用 SortList<T> 和 List<T> . 其中SortList<T> 是在元素被加入到其中时进行了排列,也就是其中的内容是一直按顺序排的,比如原来里面有 1,2,5 这3个元素,你又在后面再加一个3进去,并不是 1,2,5,3而是会自动把3放到2和5的中间. List<T> 是必须在你显式调用Sort方法以后才会排序,你可以传递一个委托指明比较大小的方式. 比如你要排序的是汉字,你可以通过传递不同的委托让它按笔划排或者按拼音排.

3只有C#项目的后缀才是csproj, VB.NET和J#都不是 sln是解决方案文件,可以包含0个到多个项目(不一定是C#的)


4 事实上Windows上的回车是 \r\n 而UNIX上则是 \n . 这样在Windows系统上由于TextBox是处理纯文本,他的换行是系统的换行\r\n, 而richTextBox处理富文本要求对各种格式的支持因此同时支持\r\n 和 \n两种换行