程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 黑馬程序員_C#結構的學習

黑馬程序員_C#結構的學習

編輯:C#入門知識

結構是程序員定義的數據類型,非常的類似於類。有數據成員和函數成員。 但是也有區別: 1)類是引用類型,而結構是值類型; 2)結構是隱式密封的,不能被派生; 語法聲明與類相似:   //結構的聲明          struct StructName          {              //包含的成員變量          }  看下邊的示例代碼來演示C#結構的使用方法:   static void Main(string[] args)          {              Point first, second, third;              first.x = 10; first.y = 10;              second.x = 20; second.y = 20;              third.x = first.x + second.x;              third.y = first.y + second.y;                Console.WriteLine("first:{0},{1}",first.x,first.y);              Console.WriteLine("second:{0},{1}",second.x,second.y);              Console.WriteLine("third:{0},{1}",third.x,third.y);              Console.ReadKey();          }            struct Point          {              public int x;              public int y;          }  結構是值類型   1)結構類型的變量不能使null; 2)兩個結構變量不能引用同一對象   static void Main(string[] args)          {              CSimple cs1 = new CSimple(),cs2=null;              Simple ss1 = new Simple(),ss2=new Simple();                cs1.x = ss1.x = 5;              cs1.y = ss1.y = 10;              cs2 = cs1;   //賦值類實例              ss2 = ss1;   //賦值結構實例            }            class CSimple          {              public int x;              public int y;          }            struct Simple          {              public int x;              public int y;          }  先創建一個CSimple類,和一個Simple結構   在Main()分別對它們實例化聲明兩個個變量後,cs1和cs2分別指向在堆中的引用,而ss1和ss2分別在棧中分配空間並存儲。 把一個結構賦值給另外一個結構,就是從一個結構中把值復值給另外一個結構。與類不同的是,復制類變量時只有引用被復制。 如上面的代碼,類賦值結束後,cs2和cs1指向堆中的同一個對象。但是在結構賦值結束後,ss2成員的值和ss1成員的值相同。   結構中的構造函數和析構函數 語言隱式的為每個結構提供一個無參數的構造函數。這個構造函數把結構的每個成員設置為該類型的默認值,引用成員被設置成null 預定義的無參數構造函數對每個結構都存在,而且不能刪除或者重新定義。但是可以創建另外的構造函數,只要他們有參數。這和類不同,對於類,編譯器只在沒有其它構造函數聲明時提供隱式的無參數構造函數。 要調用一個構造函數,包括隱式的無參數構造函數,要使用new運算符。即使不從堆中分配內存也使用new運算符。 如下面的實例:   static void Main(string[] args)          {                Simple s1 = new Simple();  //調用隱式的構造函數              Simple s2 = new Simple(5, 10);  //調用構造函數              Console.WriteLine("{0},{1}",s1.x,s1.y);              Console.WriteLine("{0},{1}", s2.x, s2.y);                            Console.ReadKey();          }            struct Simple          {              public int x;              public int y;                public Simple(int a, int b)              {                  x = a;                  y = b;              }          }  也可以不適用new運算符創建結構的實例。但是,有一些限制:   1)不能使用數據成員的值,直到顯示的設置它 2)不能調用任何函數成員,直到所有數據成員已經被賦值   static void Main(string[] args)          {                Simple s1, s2;              Console.WriteLine("{0},{1}", s1.x, s1.y);//編譯錯誤,s1.x, s1.y還沒有被賦值                s2.x = 50;              s2.y = 10;              Console.WriteLine("{0},{1}", s2.x, s2.y);                        Console.ReadKey();          }            struct Simple          {              public int x;              public int y;          }   

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