結構
1. 結構是什麼?
數據類型,值類型數據(存儲值)
值類型:存儲的是值,棧內存。
簡單值類型(13種)數組
枚舉類型ide
引用類型:存儲的地址,堆棧中
數組測試
類類型spa
int[] num = new int[4]對象
1.等號左側 : int[] num
棧內存開闢區域,存儲變量num繼承
2.等號右側: new int[4]
堆內存開闢區,存儲數組,4個元素接口
3.將等號左側與等號右側鏈接,
棧內存中開闢的num指向堆內存真正的數組隊列
棧num存儲的是什麼?num數組的地址遊戲
num[0] :內存
b[1] :
int[] b = new int[3];
Console.WriteLine( b );
Role r = new Role();
2. 結構的基本語法?
struct 結構名
{
//成員
}
注:結構的命名方式和類是同樣的。
3. 結構中能夠放什麼內容?
類中能夠放的內容,結構中大部分均可以。
1) 字段
2) 普通方法
3) 含有參數的構造方法
4) 不能放無參數的構造方法
4. 結構的特色(結構和類的區別)
1) 結構是一種值類型 的數據,
建立一個結構對象時,沒必要使用 new 建立結構對象
通常不會這樣用,可是使用:
Point p = new Pint()也不會報錯;
例如:
如下幾行代碼分別將Point做爲類和結構
來描述。
class Point { } Point p = new Point();
---------------------------------------------
struct Point { } //建立一個結構
如何建立結構對象,設置字段值
i. Point p ; //直接聲明Point類型的變量p
p.x = 20 ; //爲p中的x字段賦值
ii. Point p = new Point( 20 );
利用含有一個參數的構造方法爲p賦值
2) 結構屬於值類型
類屬於引用類型
Point p = new Point( 20 ); 類
Point p ;
p.x = 20 ; 結構
3) 什麼時候使用使用類 ?使用結構:?
使用類:
使用結構:
若是描述的對象是一種比較複雜,或字段較多時
就要使用類。
若是要描述一種包含多個值,可是是一種輕量級的
數據類型時,使用結構。
--------------------------------------------------------
集合
程序中存儲數據,能夠經過哪些方式存儲?
1) 存儲一個數字,經過哪一種方式存儲?
如:18
2)存儲多個同一類型的多個數據,經過哪一種類型存儲?
好比:一組數字:10,20,30,40,60
一組名字:"Tom","Lucy","Jack"
集合
1. ArrayList
2. List
3. Dictionary
1.ArrayList
//已通過時了 ArrayList();
using System.Collections;
-------------------------------------------------------
2. List<T>
1) 建立List集合的基本語法:
List<集合>
1. <T> 泛型
T: 數據類型
int,byte ,short ,string
bool
char
Car
Person
Role
Hero
Solider
.....
2. 泛型:
1)類型限制,集合中的數據類型進行限制
2)<T> 表示泛型的寫法。
T指的是一種數據類型
3)泛型是一種編譯期的類型
(運行之間會進行語法檢查)
針對泛型的語法檢查:檢查的是類型是否匹配
3.List 集合和 ArrayList 集合同樣,提供了經常使用的方法:
1)Count
2) Add()
3) Remove()
4) RemoveAt()
5) Reverse()
6) Contains()
7) ToArray()
.........
練習:
1.建立一個ArrayList集合,集合名爲 numbers
2)向集合中添加3個float類型的數據,分別爲:
1.1f , 2.2f, 3.3f
3)獲取集合的元素個數並打印
4) 對集合進行遍歷(使用for或foreach便可)
5) 繼續向集合中添加一個bool類型的數據,值爲 true
6) 再對集合進行遍歷(使用for或foreach便可)
查看是否有錯誤。
2.建立一個List集合,集合中存儲「Book」類型的數據,
集合名爲 books.注:請本身建立Book類,包含書名,價格...
1) 建立三個Book類型的對象,並經過Add()方法添加到集合
2)獲取集合的長度(Count)
3)遍歷books集合中的元素,打印出每一本書的書名
4) 移動集合中下標爲1的元素,移除後,打印集合長度
觀察是否有變化.提示:RemoveAt(下標值)
5)將books集合轉成數組類型 ToArray(),親打印數組長度
6)將books數組清空,Clear(),而後再打印集合長度。
7)體會List集合是如何限制集合中存放的數據數據類型的.
-----------------------------------------------------
3.Dictionary 字典
List<T>
Dictionary <key,value>
花名冊
1-王勇輝
2-李...
3-宋旗艦
1. Dictionary 基本語法:
Dictionary<TKEY,TVALUE> dic = new
Dictionary < TKey , TValue > ();
鍵 值對
Dictionary<int ,string> names = new .....
names.Add( 1 ,"王勇輝" );
names.Add( 2, "Lucy" );
names.Add( 3, "宋旗艦" );
2. Dictionary 如何存儲數據
使用 鍵值對 的形式存儲。
存放字典中的每一個元素,有兩分組成:key,value
字典中的key的值不能重複,不然 報錯;
可是value的值卻能夠重複。
集合中的全部key值,能夠經過方法獲取到,是一個集合
集合中的全部value值,能夠經過方法獲取到,是一集合
1101010101203 , "老王"
1101010138434 , "老王"
3. 經常使用方法:
1) 如何建立Dictionary集合
2)獲取集合中的全部key鍵,如何遍歷全部的鍵值
3)獲取集合中的全部value值,如何遍歷全部的鍵值
4)獲取集合中元素的個數(長度)
5)查找集合中是否存在指定的key值
6)查找集合中是否存在指定的value值
7)......
練習:建立一個Dictionary 集合,花名冊
學生的編號做爲鍵值,學生的名字做爲字典的值。
要求:
1) 有一個集合 : new
2) 向集合中添加數據 :Add()
3) 獲取全部學生的編號, 遍歷學生的編號 Keys
4) 獲取全部學生的名字,遍歷學生的姓名 values
5) 查找編寫爲"18"的這個號碼有沒有出如今花名冊了
想18號所對應的那個學生的學生名字。
ContainsKey()
class Dictionary<TKey, TValue>
{
//KeyCollection做爲了字典集合的一個內部類
//直接把它當成一個普通的變量就行
class KeyCollection { }
}
//返回類型是 :KeyCollection 類型的
//可是KeyCollection類型不能直接寫,
//應該把它的 上一層上清楚,中間用點
Dictionary<TKey, TValue> . KeyCollection = names.Keys ;
4. 案例
集合總結:
1.ArrayList 集合已通過時,再也不使用。
若是在代碼中使用,須要手動導入命名究竟:
using System.Collections;
2.List<T> 替代了ArrayList的操做
List<T> 所在的命名空間:System.Collections.Generic
提示了增刪改查的經常使用方法
容許出現相同值的元素
存儲數據時,第一個集合元素下標爲0,後面爲1...
3. Dictionary<Tkey,TValue> 字典集合
以鍵值對的形式存儲數據。
所在的命名空間:System.Collections.Generic
Key,Value ----
------------------------------------------------------
樹
二叉樹
隊列
堆棧
總結:
結構 -- 結構是什麼?
和類類似
struct 結構
不能無參數構造方法
繼承
內存 -- 數據類型
值類型:分哪幾種
13種
結構
枚舉
引用類型
new 關鍵字---屬於引用類型
new int[4]
new Hero("name")
interface 接口
委託
string
引用類型在進行參數傳遞時,傳遞的是地址
值類型在進行參數傳遞時,傳遞的是值
public static void Change( int[] n )
{
n[0] = 100l;
}
static void Main(string[] args)
{ int[] a = { 100,200,300 };
Change( a );
Console.WriteLine( a[0] );
}
day13 (2019.4.18) (2018.01.15.)做業
1.List集合的使用
建立一個List集合,集合名爲numbers,集合中用於存儲10個數字,
10個數字要求利用隨機數產生。範圍爲(-100,100)
要求:
1) 打印集合中的元素個數
而後使用 for循環遍歷集合
2) 向集合最後一個下標處插入int數字的最大值
而後使用 foreach 遍歷集合
3) 請嘗試移除集合中int類型最大的那個數字,
而後返回結果
4) 移除集合中的全部元素
2. Dictionary<Key,Value> 集合集合
建立一個集合,該集合用於表現遊戲角色的基本信息
key表示角色的編號(int),value表示角色
注:集合的key爲int類型,集合的value值爲Role類型
建立Role類,包含的內容:角色名稱,角色年齡
要求:
1) 向集合中添加5個不一樣的角色,
101 ---- 呂布,18,
102 ---- 西施,20
103 ---- 八戒,30
104 ---- 李白,40
105 ---- 貂蟬,19
2) 請嘗試獲取集合中的全部 key ,並遍歷
3) 請嘗試獲取集合中的全部 value,並遍歷
4) 遍歷集合
3. 在已經有繼承關係 的試題類中,繼續完成如下操做:
1) 構建一個試題類型的數組,Question[]
用於存儲5道不一樣類型的數據
2) 要求,建立單選試題,多選試題,使用父類變量指向子類
對象的方式建立
3) 將試題添加到數組中
4) 從數組中隨機取出一道試題,將這道試題打印到控制檯
而後提示用戶輸入答案,判斷答案
4. 遊戲樹 案例,沒有完成的同窗,
週末請辛苦完成。
做業1:(選作題)
定義一個圖形類,Shape.cs -- 父類
包含的內容:
---字段: 圖形名字(string name )
---方法: 構造方法(無參數,含有1個參數)
注:方法會被子類重寫 ,virutal
求周長 --- double GetLength() --- 0.0
求面積 --- double GetArea() --- 0.0
定義兩個子類,一個表示圓形,一個表示矩形
圓形類,Circle.cs , 包含的內容:
---字段: 半徑 ( float radius )
---方法: 構造方法(無參,含有兩個參數)
重寫父類的求周長和求面積的方法
求周長:2 * 圓周率 * 半徑
求面積:圓周率 * 半徑 * 半徑
注:圓周率暫時使用:Math.PI 獲取
3) 矩形類,Rectangle.cs , 子類,包含的內容:
---字段:長(float height ),寬(float width)
---方法: 構造方法(無參數,含有2個參數)
重寫父類的求周長和求面積的方法
求周長:2 *( 長 + 寬 )
求面積:長*寬
要求:類中的字段所有私有化,類中的方法公開化.
爲私有化字段添加標準屬性
建立一個圓形,經過屬性實現爲圓的字段賦值
圓的名字爲: 小圓圓,半徑爲10.0
要求,根據給定的內容,計算圓的周長和麪積
建立一個矩形類,經過構造方法爲矩形的長和寬字段賦值
長爲12.0,寬爲5.5
而後經過屬性爲矩形的名字賦值, 矩形1,
要求,根據給定的內容,計算矩形的周長和麪積.
測試類