新建一个test.cs
using System; namespace google.com { class MyFirstClass { static void Main() { Console.WriteLine("Hello world!"); } } }
编译成功后会在该目录下生成test.exe文件。
程序解释:
using System是用来引入System基类,和java的import相似,C#的所有工作都依赖于该基类。
namespace google.com表示命名空间为google.com,命名空间为的是解决命名冲突问题,可修改。
变量的类型
静态变量:
从程序开始运行,就被分配内存,若静态变量为引用类型,则初始值为null。
实例变量:
在使用该变量才进行内存分配。类的实例变量存在于类的实例创建开始到该实例被释放。结构的实例变量和它的生存周期是相同的。
局部变量:
局部变量不会自动初始化,因此,在使用时必须显式地初始化。
值参数:
相当于一个局部变量,只是初始值为实参给定。
引用参数:
int F(ref int i, int j) { i--; return i + j; }
//调用F
int i = 10;
int sum = F(ref i,100);
Consold.WriteLine( i ); //输出9
输出参数:
类似引用参数,也不创建新的存储位置,输出参数的值总是与基础变量相同。输出变量不一定要显式初始化,在函数成员内部,out参数被视为未初始化的。
static int s; //定义静态变量,默认值为0 int v; //定义int型变量 void F(int[]a, int i, ref int r, out int 0) //定义数组a,值参数i,引用参数r,输出参数o
变量初始化
1.变量或者结构中的字段,如果没有显式地初始化,默认为0。
2.方法中的变量,必须显式地初始化,否则使用该变量是会出错。
3.一般值类型都具有默认初始值,而引用类型没有默认初始值。
变量的作用域
using System; namespace google.com { class MyFirstClass { int j = 30; static void Main() { int j = 20; int i = 5; Console.WriteLine(i+j); } } }
第一个变量j属于整个类,第二个j属于Main方法,第二个j会替代第一个j,所以输出的是25。
using System; namespace google.com { class MyFirstClass { static void Main() { int j = 20; for(int i=0; i<10; i++){ int j = 5; Console.WriteLine(i+j); } } } }
这段代码编译会出错,因为第一个j和for循环里的变量j冲突了。
常量
用const关键字声明
1.常必须在声明的时候就初始化,而且赋值后就不能再更改。
2.常量问题静态的,不必再用static声明。