C#基础(二)变量和常量

新建一个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
ref声明的为引用参数,j是值参数。在调用包含ref参数的方法时也要加ref修饰变量。
输出参数:

类似引用参数,也不创建新的存储位置,输出参数的值总是与基础变量相同。输出变量不一定要显式初始化,在函数成员内部,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声明。

原文地址:https://www.cnblogs.com/yoomin/p/3497747.html