• 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声明。

  • 相关阅读:
    static final常量变量的正确书写规范
    Why aren't more desktop apps written with Qt?(quora.com系列文章)
    建议学个一知半解的时候,再看书
    C++中new和delete的背后(最后还是调用了MSVCR90的malloc)
    关于Qt的事件循环以及QEventLoop的简单使用(QEventLoop::quit()能够终止事件循环,事件循环是可以嵌套的)
    QProcess::startDetached(5.10有了一种新的方式)
    微信公众号支付开发
    Middleware

    TOKEN+签名验证
  • 原文地址:https://www.cnblogs.com/yoomin/p/3497747.html
Copyright © 2020-2023  润新知