Jacob的C++程序员光速入门C#系列:
C++程序员光速入门C#(一):总览、数据类型、运算符
C++程序员光速入门C#(二):流程控制、函数、类
之前看了一个很有价值的系列博客,博主以C++的视角来入门C#,个人感觉非常的棒。虽然是很久以前写的了,很多新特性都没有涉及,但作为入门参考学习还是很有价值的。这里我把它重新排版修订一下,作为读书笔记,也希望能帮助到读者。原博客地址: C++程序员快速学习C#---(一)
一.Hello world!
随着.NET的深入人心,作为一个程序员,当然不能在新技术面前停而止步,面对着c++在.net中的失败,虽然有一丝遗憾,但是我们应该认识到,对于c++其实就不应该对其在.Net中的表现有太大的奢望,因为毕竟它并不是一个.Net下的正统语言,.Net应该是c#的舞台,作为一个c++程序员,我们应该庆幸,因为我们学习c#其实是简单的直接的,需要我们接受的新知识其实不多。相对其他语言来说,我们应该可以更加平滑的过渡到c#的开发中.废话不多说,现在就让我们用c++的基础来学习这个渐渐壮大的新语言-----C#。
对于C#的讲解我只讲解和C++有区别的地方,相同的部分我就一带而过,这样的对比学习可以让我们在已有知识的前提下快速掌握C#。
一开始学习语言大部分的教程都会用一个Hello World程序来示范,我们也落入俗套,用Hello World来和C++中做一个比较。
/******************C++程序**********************/
#include <iostream>
using namespace std;
int main()
{
//C++程序
cout<<"Hello World!"<<endl;
return 0;
}
/********************C#程序*********************/
using System;
namespace HelloWorld
{
class Class1
{
//C#程序
static void Main()
{
Console.WriteLine ("Hello World!");
}
}
}
乍一眼看上去两者差不多,心中一阵窃喜,可以说C#对语法的定义更加严格一些。
首先对于程序的进入点,最大的区别就是Main函数的开头必须要大写。因为C#是一个完全面向对象的程序语言,所以它的所有代码都必须定义在一个类中,Main函数也不例外。同时因为.net程序在编译运行时都是先转为中间语言,然后中间语言再编译为机器语言,这样的好处有2个。一,如同Java一样,写好的程序可以在不同的系统中运行,而不需要改变程序;二,使用不同的语言写的程序,因为要转化为相同的中间语言,所以在程序开发中可以使用不同的程序语言编写,而相互调用。
当使用不同语言开发或者进行分类开发时,各自开发的程序中会出现相同的变量名,函数名等,所以在写C#程序时,必须把程序包涵在一个名字空间内。C++在多文件编程的时候出现重复的变量名的时候,会比较头疼,C#则没有这个问题,因为所有的类定义都要在一个命名空间里,而变量只能定义在类中,不存在所谓的全局变量。
定义名字空间使用关键字:namespace <空间名>,当一个命名空间中的代码需要使用在另一个名字空间中定义的名称,就必须包括对该命名空间的引用,使用点字符(.) 。
/********************C#程