程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> .NET 基礎 一步步 一幕幕[面向對象之靜態、非靜態],.net面向對象

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

編輯:關於.NET

.NET 基礎 一步步 一幕幕[面向對象之靜態、非靜態],.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()
        {
 
        }
    }
}

可以看出靜態與非靜態的區別在於 關鍵字 : 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 (加群備注:博客園看到的)

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved