.NET 基礎 一步步 一幕幕[面向對象之靜態、非靜態]

靜態、非靜態函數

先來看一段代碼來區分靜態與非靜態:工具

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()
        {
 
        }
    }
}

能夠看出靜態與非靜態的區別在於 關鍵字 : staticspa

 

靜態和非靜態的區別:對象

1)、在非靜態類中,既能夠有實例成員,也能夠有靜態成員。blog

2)、在調用實例成員的時候,須要使用對象名.實例成員;資源

在調用靜態成員的時候,須要使用類名.靜態成員名;get

3)、非靜態類中:既能夠定義靜態字段、靜態屬性、靜態方法,也能夠定義非靜態(實例成員)字段、非靜態(實例成員)屬性、非靜態(實例成員)方法。博客

 

如今來看一個靜態與非靜態的小案例:string

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("我是一個靜態方法");
        }
}

運行結果:it

 

總結:

靜態成員必須使用類名去調用,而實例成員使用對象名調用。

靜態函數中,只能訪問靜態成員,不容許訪問實例成員。

實例函數中,既能夠使用靜態成員,也能夠使用實例成員。

靜態類中只容許有靜態成員,不容許出現實例成員。

使用:

1)、若是你想要你的類當作一個"工具類"去使用,這個時候能夠考慮將類寫成靜態的。

2)、靜態類在整個項目中資源共享。只有在程序所有結束以後,靜態類纔會釋放資源。

 

本篇就到這裏了,最後打個小廣告:QQ羣: .NET 一步步一幕幕  羣號:590170361 (加羣備註:博客園看到的)

相關文章
相關標籤/搜索