C#基础——静态变量和静态方法

静态变量和静态方法都必须通过类名来引用。

简单使用示例

using System;

class StaticVar
{
    public int x;
    public static int y;
    public void PrintInfo(){
        Console.WriteLine("非静态变量x={0}",x);
        Console.WriteLine("静态变量y = {0}",y);
    }
}
class Test
{
    static void Main(string[] args){
        StaticVar stv = new StaticVar();
        stv.x = 10;
        // stv.y = 20; //error;无法使用实例引用访问静态成员“StaticVar.y”;改用类型名来限定它
        StaticVar.y = 20;
        stv.PrintInfo();
    }
}

对于静态变量在声明时,如果没有给出初始值或使用前没有赋值的话,系统会给他们一个默认值:对于整型数据默认值为0;单精度数据为:0.0f;双精度数据为0.0;布尔型数据为False;引用型数据为null。

静态方法:
1、静态方法与静态变量一样,不属于任何特定的实例,属于类全体成员共有,由类名来调用。
2、静态方法只能访问类的静态成员,不能访问类的非静态成员。
3、非静态方法可以访问类的静态成员,也可以访问类的非静态成员。
4、静态方法不能使用示例来调用,只能使用类名来调用。

using System; 

namespace TestStatic
{
    class StaticTest
    {
        int x;
        static int y;
        public StaticTest(int a,int b){
            x = a;
            y = b;
        }
        public void SimplePrint(){
            Console.WriteLine("x="+x+",y="+y);
        }
        public static void StaticPrint(){
            Console.WriteLine("y={0}",y);
            // Console.WriteLine("x={0}",x); //静态方法中不能使用非静态成员
        }
    }
    class Test
    {
        static void Main(string[] args){
            StaticTest st = new StaticTest(10,23);
            st.SimplePrint();
            //st.StaticPrint(); //静态方法不能使用实例来调用
            StaticTest.StaticPrint();
        }
    }
原文地址:https://www.cnblogs.com/LY-CS/p/13223313.html