黑马程序员-------静态(成员、类、构造函数)

------- Windows Phone 7手机开发.Net培训、期待与您交流! -------

namespace 静态成员静态类
{
    class Program
    {
        static void Main(string[] args)
        {
            Myclass1 mc = new Myclass1();
            mc.M1();
            //1、调用静态方法的时候必须通过类名直接调用,不能通过对象来调用
            //也就是说使用静态成员不需要实例化对象

            //2、静态成员会在整个应用程序退出时,才会释放资源。
            //所以可以在整个程序中共享数据
               Myclass1.M2();
            Console.ReadKey();
        }
    }

    class Myclass1
    {
        public void M1()
        {
            Console.WriteLine("M1");
        }

        public static void M2()
        {
            Console.WriteLine("静态成员方法");
        }
    }
}


 

namespace 静态构造函数 {     public static class Myclass//静态类     {         static Myclass()  //静态构造函数         {             Console.WriteLine("静态构造函数");         }

        public static int age;         public static string name;         public static void Say()         {             Console.WriteLine("Hi");

        }     } }

namespace 静态构造函数
{
    class Program
    {
        //静态类的构造函数,只会在使用静态类之前,执行并只会执行一次
        //静态构造函数不能有访问修饰符,不能有参数
          static void Main(string[] args)
        {
            //Myclass.age = 18;
            //Myclass.Say();


            T1();
            T2();
            T3();
            Console.WriteLine();
            Console.ReadKey();
        }
        //静态构造函数不能有访问修饰符,不能有参数
          static void T1()
        {
            Myclass.age = 10;
        }

        static void T2()
        {
            Myclass.name = "aaa";
        }

        static void T3()
        {
            Myclass.Say();
        }
    }
}


 

namespace 静态成员
{
    class Class1
    {
        public static string  msg;  //定义一个静态成员变量 msg
        
    }
}
namespace 静态成员
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Class1.msg = msg.Text.Trim();
            this.Text = msg.Text;
        }

        private void button2_Click(object sender, EventArgs e)
        {
            Form2 fm = new Form2();
            fm.Show();
        }
    }
}


    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Form3 fm = new Form3();
            
            fm.Show();
        }

        private void Form2_Load(object sender, EventArgs e)
        {
            this.Text = Class1.msg;
        }
    }


上面窗体的演示效果如图:

 

 

由于静态成员会在整个应用程序退出时,
才释放资源,所以可以在整个应用程序中共享数据。

 

 

 

学习笔记记录如下:

1、什么时候情况下要将一个类标记为静态类

一般情况是当这个类是一个工具类,里面都是方法,为了让用户调用时更方便,
不需要实例化对象,可以将这个类标记为静态类(static),此时这个类只能包含静态成员
不能包含实例成员。比如:Convert,Math,File,Console等


2、什么情况下需要在一个普通类中编写一个静态成员,而这个类不能标记为static?

当这个类需要被实例化的时候。如果这个类中有一个成员是所有对象都共享的数据,
这时可以将该类中的这个成员标记为静态的,但是这个类还是一个实例类。


1>调用静态方法的时候必须通过类名直接来调用,不能通过对象来调用,
也就是说使用静态成员不需要实例化对象。

 

2>静态成员会在整个应用程序退出时,
才释放资源,所以可以在整个应用程序中共享数据。

3>静态类不能被实例化,并且只能继承自objec类,不能继承自其他类。也不能被其他类继承


4>由于静态成员会在整个程序退出时,才释放资源,
所以尽量避免写静态字段或静态属性,最好只写静态方法。


5>当给一个普通类添加静态字段后,
系统会默认为该类生成一个静态构造函数【静态构造函数不能有访问修饰符、并且也不能带参数】

6>静态类的构造函数,只会在第一次使用静态类之前,执行,并且只会执行一次。


静态构造函数不能有访问修饰符,不能有参数。


静态类不能实现任何的接口,(因为接口中的成员都是实例成员)

 



 

------- Windows Phone 7手机开发.Net培训、期待与您交流! -------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值