多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

中國最全IT社區(qū)平臺 聯系我們 | 收藏本站
阿里云優(yōu)惠2

csharp教程

C# 類(Class)

閱讀 (2198)

C# 類(Class)

當您定義一個類時,您定義了一個數據類型的藍圖。這實際上并沒有定義任何的數據,但它定義了類的名稱意味著什么,也就是說,類的對象由什么組成及在這個對象上可執(zhí)行什么操作。對象是類的實例。構成類的方法和變量成為類的成員。

類的定義

類的定義是以關鍵字 class 開始,后跟類的名稱。類的主體,包含在一對花括號內。下面是類定義的一般形式:

<access specifier> class  class_name 
{
    // member variables
    <access specifier> <data type> variable1;
    <access specifier> <data type> variable2;
    ...
    <access specifier> <data type> variableN;
    // member methods
    <access specifier> <return type> method1(parameter_list) 
    {
        // method body 
    }
    <access specifier> <return type> method2(parameter_list) 
    {
        // method body 
    }
    ...
    <access specifier> <return type> methodN(parameter_list) 
    {
        // method body 
    }
}

請注意:

  • 訪問標識符 <access specifier> 指定了對類及其成員的訪問規(guī)則。如果沒有指定,則使用默認的訪問標識符。類的默認訪問標識符是 internal,成員的默認訪問標識符是 private
  • 數據類型 <data type> 指定了變量的類型,返回類型 <return type> 指定了返回的方法返回的數據類型。
  • 如果要訪問類的成員,您要使用點(.)運算符。
  • 點運算符鏈接了對象的名稱和成員的名稱。

下面的實例說明了目前為止所討論的概念:

using System;
namespace BoxApplication
{
    class Box
    {
       public double length;   // 長度
       public double breadth;  // 寬度
       public double height;   // 高度
    }
    class Boxtester
    {
        static void Main(string[] args)
        {
            Box Box1 = new Box();        // 聲明 Box1,類型為 Box
            Box Box2 = new Box();        // 聲明 Box2,類型為 Box
            double volume = 0.0;         // 體積

            // Box1 詳述
            Box1.height = 5.0;
            Box1.length = 6.0;
            Box1.breadth = 7.0;

            // Box2 詳述
            Box2.height = 10.0;
            Box2.length = 12.0;
            Box2.breadth = 13.0;
           
            // Box1 的體積
            volume = Box1.height * Box1.length * Box1.breadth;
            Console.WriteLine("Box1 的體積: {0}",  volume);

            // Box2 的體積
            volume = Box2.height * Box2.length * Box2.breadth;
            Console.WriteLine("Box2 的體積: {0}", volume);
            Console.ReadKey();
        }
    }
}

當上面的代碼被編譯和執(zhí)行時,它會產生下列結果:

Box1 的體積: 210
Box2 的體積: 1560

成員函數和封裝

類的成員函數是一個在類定義中有它的定義或原型的函數,就像其他變量一樣。作為類的一個成員,它能在類的任何對象上操作,且能訪問該對象的類的所有成員。

成員變量是對象的屬性(從設計角度),且它們保持私有來實現封裝。這些變量只能使用公共成員函數來訪問。

讓我們使用上面的概念來設置和獲取一個類中不同的類成員的值:

using System;
namespace BoxApplication
{
    class Box
    {
       private double length;   // 長度
       private double breadth;  // 寬度
       private double height;   // 高度
       public void setLength( double len )
       {
            length = len;
       }

       public void setBreadth( double bre )
       {
            breadth = bre;
       }

       public void setHeight( double hei )
       {
            height = hei;
       }
       public double getVolume()
       {
           return length * breadth * height;
       }
    }
    class Boxtester
    {
        static void Main(string[] args)
        {
            Box Box1 = new Box();        // 聲明 Box1,類型為 Box
            Box Box2 = new Box();        // 聲明 Box2,類型為 Box
            double volume;              // 體積


            // Box1 詳述
            Box1.setLength(6.0);
            Box1.setBreadth(7.0);
            Box1.setHeight(5.0);

            // Box2 詳述
            Box2.setLength(12.0);
            Box2.setBreadth(13.0);
            Box2.setHeight(10.0);
       
            // Box1 的體積
            volume = Box1.getVolume();
            Console.WriteLine("Box1 的體積: {0}" ,volume);

            // Box2 的體積
            volume = Box2.getVolume();
            Console.WriteLine("Box2 的體積: {0}", volume);
           
            Console.ReadKey();
        }
    }
}

當上面的代碼被編譯和執(zhí)行時,它會產生下列結果:

Box1 的體積: 210
Box2 的體積: 1560

C# 中的構造函數

類的 構造函數 是類的一個特殊的成員函數,當創(chuàng)建類的新對象時執(zhí)行。

構造函數的名稱與類的名稱完全相同,它沒有任何返回類型。

下面的實例說明了構造函數的概念:

using System;
namespace LineApplication
{
   class Line
   {
      private double length;   // 線條的長度
      public Line()
      {
         Console.WriteLine("對象已創(chuàng)建");
      }

      public void setLength( double len )
      {
         length = len;
      }
      public double getLength()
      {
         return length;
      }

      static void Main(string[] args)
      {
         Line line = new Line();    
         // 設置線條長度
         line.setLength(6.0);
         Console.WriteLine("線條的長度: {0}", line.getLength());
         Console.ReadKey();
      }
   }
}

當上面的代碼被編譯和執(zhí)行時,它會產生下列結果:

對象已創(chuàng)建
線條的長度: 6

默認的構造函數沒有任何參數。但是如果您需要一個帶有參數的構造函數可以有參數,這種構造函數叫做參數化構造函數。這種技術可以幫助您在創(chuàng)建對象的同時給對象賦初始值,具體請看下面實例:

using System;
namespace LineApplication
{
   class Line
   {
      private double length;   // 線條的長度
      public Line(double len)  // 參數化構造函數
      {
         Console.WriteLine("對象已創(chuàng)建,length = {0}", len);
         length = len;
      }

      public void setLength( double len )
      {
         length = len;
      }
      public double getLength()
      {
         return length;
      }

      static void Main(string[] args)
      {
         Line line = new Line(10.0);
         Console.WriteLine("線條的長度: {0}", line.getLength()); 
         // 設置線條長度
         line.setLength(6.0);
         Console.WriteLine("線條的長度: {0}", line.getLength()); 
         Console.ReadKey();
      }
   }
}

當上面的代碼被編譯和執(zhí)行時,它會產生下列結果:

對象已創(chuàng)建,length = 10
線條的長度: 10
線條的長度: 6

C# 中的析構函數

類的 析構函數 是類的一個特殊的成員函數,當類的對象超出范圍時執(zhí)行。

析構函數的名稱是在類的名稱前加上一個波浪形(~)作為前綴,它不返回值,也不帶任何參數。

析構函數用于在結束程序(比如關閉文件、釋放內存等)之前釋放資源。析構函數不能繼承或重載。

下面的實例說明了析構函數的概念:

using System;
namespace LineApplication
{
   class Line
   {
      private double length;   // 線條的長度
      public Line()  // 構造函數
      {
         Console.WriteLine("對象已創(chuàng)建");
      }
      ~Line() //析構函數
      {
         Console.WriteLine("對象已刪除");
      }

      public void setLength( double len )
      {
         length = len;
      }
      public double getLength()
      {
         return length;
      }

      static void Main(string[] args)
      {
         Line line = new Line();
         // 設置線條長度
         line.setLength(6.0);
         Console.WriteLine("線條的長度: {0}", line.getLength());           
      }
   }
}

當上面的代碼被編譯和執(zhí)行時,它會產生下列結果:

對象已創(chuàng)建
線條的長度: 6
對象已刪除

C# 類的靜態(tài)成員

我們可以使用 static 關鍵字把類成員定義為靜態(tài)的。當我們聲明一個類成員為靜態(tài)時,意味著無論有多少個類的對象被創(chuàng)建,只會有一個該靜態(tài)成員的副本。

關鍵字 static 意味著類中只有一個該成員的實例。靜態(tài)變量用于定義常量,因為它們的值可以通過直接調用類而不需要創(chuàng)建類的實例來獲取。靜態(tài)變量可在成員函數或類的定義外部進行初始化。您也可以在類的定義內部初始化靜態(tài)變量。

下面的實例演示了靜態(tài)變量的用法:

using System;
namespace StaticVarApplication
{
    class StaticVar
    {
       public static int num;
        public void count()
        {
            num++;
        }
        public int getNum()
        {
            return num;
        }
    }
    class StaticTester
    {
        static void Main(string[] args)
        {
            StaticVar s1 = new StaticVar();
            StaticVar s2 = new StaticVar();
            s1.count();
            s1.count();
            s1.count();
            s2.count();
            s2.count();
            s2.count();         
            Console.WriteLine("s1 的變量 num: {0}", s1.getNum());
            Console.WriteLine("s2 的變量 num: {0}", s2.getNum());
            Console.ReadKey();
        }
    }
}

當上面的代碼被編譯和執(zhí)行時,它會產生下列結果:

s1 的變量 num: 6
s2 的變量 num: 6

您也可以把一個成員函數聲明為 static。這樣的函數只能訪問靜態(tài)變量。靜態(tài)函數在對象被創(chuàng)建之前就已經存在。下面的實例演示了靜態(tài)函數的用法:

using System;
namespace StaticVarApplication
{
    class StaticVar
    {
       public static int num;
        public void count()
        {
            num++;
        }
        public static int getNum()
        {
            return num;
        }
    }
    class StaticTester
    {
        static void Main(string[] args)
        {
            StaticVar s = new StaticVar();
            s.count();
            s.count();
            s.count();                   
            Console.WriteLine("變量 num: {0}", StaticVar.getNum());
            Console.ReadKey();
        }
    }
}

當上面的代碼被編譯和執(zhí)行時,它會產生下列結果:

變量 num: 3
關閉
程序員人生
主站蜘蛛池模板: 天天色综合2 | 亚洲精品人成网在线播放影院 | 国产精品综合 | 亚洲最色网站 | 久久精品综合国产二区 | 亚州春色校园另类 | 日本爱爱免费视频 | 欧美一级视频在线观看欧美 | 日韩一级一片 | 黄网站免费大全 | 午夜a级片 | 日本欧美一区二区 | 亚洲 校园 欧美 动漫 制服 | 亚色精品 | 午夜成年视频 | 亚洲产国偷v产偷v自拍涩爱 | 精品日韩欧美 | 久久久久久久一精品 | 国产又黄又爽又色的免费 | 亚洲视频第二页 | 国产成人精品日本亚洲专区6 | 欧美一级级毛片 | 2020久久精品亚洲热综合 | 亚洲精品第一 | 爱爱日韩 | 91色资源网在线观看 | 亚洲人在线视频 | 欧美成人毛片一级在线 | 国产精品嫩草影院午夜 | 国产精品三级一区二区 | 中国精品| 天天更新天天久久久更新影院 | 国产福利精品一区二区 | 又大又硬又黄又刺激的免费视频 | 欧美一区二区三区性 | 欧美激情一区二区亚洲专区 | 欧美性xxxxxbbbbbb精品 | 亚洲午夜久久久久中文字幕久 | 手机福利片 | 五月激情丁香婷婷综合第九 | 在线视频一区二区三区 |