C# static用法

来源:互联网 发布:黑大网络教学平台 编辑:程序博客网 时间:2024/05/18 04:37
C# static用法


首先说static 用来修饰数据成员的, 一旦修饰了数据成员,非静态方法,也是可以访问,并修改之, 因为,实例化对象共享这一份数据!! 


既然是共享,那么就可以修改之。


用法为:
 class C
    {
        private static  int id=10;   //该类的所有实例共享
        public static void changeId(int ID)    //类可以调用方法,对象是不能调用,貌似C++中,对象是可以调用静态函数
        {
            id = ID;
        }


        public void changeId2(int ID)   //非静态函数, 可以访问静态成员数据
        {
            id = ID;
        }




        public void print()    //非静态函数, 可以访问静态成员数据
        {
            Console.WriteLine(id);
        }
    }




    class MainClass
    {
        static void Main()
        {


            
            C c = new C();   
            c.print();
            c.changeId2(11);
            c.print();
            




        }    //end Main






如果想不被修改,那么可以用static readonly 来修饰!!!!


不要用const ,const是不能和static 一块用 的




如果用static 来修饰类,会怎么样?


修饰了类,那么就不能实例化对象,而且所有成员都必须声明为静态成员!!


什么情况下用静态类呢?


比如: 写了一个排序算法类,包括:冒泡排序,希尔排序,等诸多排序方法,  我们用的时候,没有必要实例化一个对象啊?


直接用静态类就行了!!!










C++ ,C# 中的static 区别: 一,前者,对象是可以调用静态方法的,并且修改静态数据。!!!后者,则不可以!


试验证明,如果把静态数据设置:public权限,前者是可以通过对象去引用的,后者,则不可以。(当然,这个有些无聊了,
不要用pulic)








二,在一个函数中,是不能定义static 成员的(对与C#) 


三,那么静态函数,可以访问非静态成员吗?


都不允许,如果类中有非静态成员,你去用静态函数访问,是错误的!!




综上: 所有方法都可以访问静态数据,但是静态函数,却不用访问非静态成员!!!


静态函数,用类去调用,不要用对象,否则是错误的。!!!


静态类,所有成员,必须是静态的。


如果想你的静态数据没有被修改,那么可以用static readonly  

原创粉丝点击