.NET 基础 一步步 一幕幕[面向对象之静态、非静态]

2017-01-08 18:47:58来源:cnblogs.com作者:ぃ______゜笑颜人点击

静态、非静态

先来看一段代码来区分静态与非静态:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace 静态和非静态的区别{    /**     * 非静态类     * 既可以定义静态字段、静态属性、静态方法。     * 也可以定义非静态(实例成员)字段、非静态(实例成员)属性、非静态(实例成员)静态方法。     **/    //非静态类    public class Person1    {        //实例成员(非静态)        private int _id;        //实例属性(非静态)        public int ID        {            get { return _id; }            set { _id = value; }        }        //实例方法(非静态)        public void Showinfo()        {        }/*--------------------------------------------------------------------*/        //静态字段        private static string _name;        //静态属性        public static string Name        {            get             {                return _name;            }            set            {                _name = value;            }        }        //静态方法        public static void Sho()        {         }    }}

可以看出静态与非静态的区别在于 关键字 : static

 

静态和非静态的区别:

1)、在非静态类中,既可以有实例成员,也可以有静态成员。

2)、在调用实例成员的时候,需要使用对象名.实例成员;

在调用静态成员的时候,需要使用类名.静态成员名;

3)、非静态类中:既可以定义静态字段、静态属性、静态方法,也可以定义非静态(实例成员)字段、非静态(实例成员)属性、非静态(实例成员)方法。

 

现在来看一个静态与非静态的小案例:

static void Main(string[] args)        {            //调用实例成员            Person p = new Person();            //非静态方法            p.M1();            //静态方法            Person.M2();                    Console.WriteLine();            Console.ReadKey();        }public class Person    {        private static string _name;        public static string Name        {            get { return Person._name; }            set { Person._name = value; }        }        private char _gender;        public char Gender        {            get { return _gender; }            set { _gender = value; }        }        public void M1()        {                       Console.WriteLine("我是非静态的方法");        }        public static void M2()        {                        Console.WriteLine("我是一个静态方法");        }}

运行结果:

 

总结:

静态成员必须使用类名去调用,而实例成员使用对象名调用。

静态函数中,只能访问静态成员,不允许访问实例成员。

实例函数中,既可以使用静态成员,也可以使用实例成员。

静态类中只允许有静态成员,不允许出现实例成员。

使用:

1)、如果你想要你的类当做一个"工具类"去使用,这个时候可以考虑将类写成静态的。

2)、静态类在整个项目中资源共享。只有在程序全部结束之后,静态类才会释放资源。

 

本篇就到这里了,最后打个小广告:QQ群: .NET 一步步一幕幕  群号:590170361 (加群备注:博客园看到的)

 

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台