物件(object)型別是 c# 通用型別系統(common type system - cts)中所有資料型別的終極基類。object 是 system.object 類的別名。所以物件(object)型別可以被分配任何其他型別(值型別、引用型別、預定義型別或使用者自定義型別)的值。但是,在分配值之前,需要先進行型別轉換。
當乙個值型別轉換為物件型別時,則被稱為裝箱;另一方面,當乙個物件型別轉換為值型別時,則被稱為拆箱。
object您可以儲存任何型別的值在動態資料型別變數中。這些變數的型別檢查是在執行時發生的。obj;
obj
=100
;// 這是裝箱
宣告動態型別的語法:
dynamic字串(string)型別允許您給變數分配任何字串值。字串(string)型別是 system.string 類的別名。它是從物件(object)型別派生的。字串(string)型別的值可以通過兩種形式進行分配:引號和 @引號。=value
;
例如:
string乙個 @引號字串:str
="w3cschool.cc"
;
@c# string 字串的前面可以加 @(稱作"逐字字串")將轉義字元(\)當作普通字元對待,比如:"w3cschool.cc"
;
string str = @"c:\windows";等價於:
string str = "c:\\windows";@ 字串中可以任意換行,換行符及縮排空格都計算在字串長度之內。
string str = @"";
c# 提供了下列內建的型別轉換方法:
序號方法 & 描述
1toboolean
如果可能的話,把型別轉換為布林型。
2tobyte
把型別轉換為位元組型別。
3tochar
如果可能的話,把型別轉換為單個 unicode 字元型別。
4todatetime
把型別(整數或字串型別)轉換為 日期-時間 結構。
5todecimal
把浮點型或整數型別轉換為十進位制型別。
6todouble
把型別轉換為雙精度浮點型。
7toint16
把型別轉換為 16 位整數型別。
8toint32
把型別轉換為 32 位整數型別。
9toint64
把型別轉換為 64 位整數型別。
10tosbyte
把型別轉換為有符號位元組型別。
11tosingle
把型別轉換為小浮點數型別。
12tostring
把型別轉換為字串型別。
13totype
把型別轉換為指定型別。
14touint16
把型別轉換為 16 位無符號整數型別。
15touint32
把型別轉換為 32 位無符號整數型別。
16touint64
把型別轉換為 64 位無符號整數型別。
封裝被定義為"把乙個或多個專案封閉在乙個物理的或者邏輯的包中"。在物件導向程式設計方**中,封裝是為了防止對實現細節的訪問。
抽象和封裝是物件導向程式設計的相關特性。抽象允許相關資訊視覺化,封裝則使程式設計師實現所需級別的抽象。
封裝使用訪問修飾符來實現。乙個訪問修飾符定義了乙個類成員的範圍和可見性。c# 支援的訪問修飾符如下所示:
public 訪問修飾符允許乙個類將其成員變數和成員函式暴露給其他的函式和物件。任何公有成員可以被外部的類訪問。
private 訪問修飾符允許乙個類將其成員變數和成員函式對其他的函式和物件進行隱藏。只有同乙個類中的函式可以訪問它的私有成員。即使是類的例項也不能訪問它的私有成員。
protected 訪問修飾符允許子類訪問它的基類的成員變數和成員函式。這樣有助於實現繼承
internal 訪問說明符允許乙個類將其成員變數和成員函式暴露給當前程式中的其他函式和物件。換句話說,帶有 internal 訪問修飾符的任何成員可以被定義在該成員所定義的應用程式內的任何類或方法訪問。
protected internal 訪問修飾符允許乙個類將其成員變數和成員函式對同一應用程式內的子類以外的其他的類物件和函式進行隱藏。這也被用於實現繼承。
引用引數是乙個對變數的記憶體位置的引用。當按引用傳遞引數時,與值引數不同的是,它不會為這些引數建立乙個新的儲存位置。引用引數表示與提供給方法的實際引數具有相同的記憶體位置。
在 c# 中,使用ref關鍵字宣告引用引數。
< data_type> ?= null;
int?
num1
=null
;int
?num2 =45
;double
?num3
=new
double
?();
null 合併運算子用於定義可空型別和引用型別的預設值。null 合併運算子為型別轉換定義了乙個預設值,以防可空型別的值為 null。null 合併運算子把運算元型別隱式轉換為另乙個可空(或不可空)的值型別的運算元的型別。
如果第乙個運算元的值為 null,則運算子返回第二個運算元的值,否則返回第乙個運算元的值。下面的例項演示了這點:
double
?num1
=null
;double
?num2
=3.14157
;double
num3
;num3
=num1
??5.34
;console
.writeline
("num3 的值: "
,num3
);num3
=num2
??5.34
;
double您可以通過使用索引號賦值給乙個單獨的陣列元素,比如:balance
=new
double[10
];
double您可以在宣告陣列的同時給陣列賦值,比如:balance
=new
double[10
];balance[0
]=4500.0
;
double您也可以建立並初始化乙個陣列,比如:balance
=;
int在上述情況下,你也可以省略陣列的大小,比如:marks
=new
int[5]
;
int您也可以賦值乙個陣列變數到另乙個目標陣列變數中。在這種情況下,目標和源會指向相同的記憶體位置:marks
=newint
;
intmarks
=newint
;int
score
=marks
;
/* 輸出每個陣列元素的值 */
foreach
(int
j inn )
] = ",i
,j);}
宣告列舉的一般語法:
enum;
C 基礎知識彙總 入門
六 內聯函式 七 auto關鍵字 c 11 八 基於範圍的for迴圈 c 11 九 指標空值nullptr c 11 使用cout標準輸出 控制台 和cin標準輸入 鍵盤 時,必須包含 iostream 標頭檔案以及std標準命名空間。使用c 輸入輸出更方便,不需增加資料格式控制,比如 整形 d,字...
C語言基礎知識彙總
c語言關鍵字 auto 宣告自動變數 break 跳出當前迴圈 case 開關語句分支 char 宣告字元型變數或函式返回值型別 const 宣告唯讀變數 continue 結束當前迴圈,開始下一輪迴圈 default 開關語句中的 預設 分支 do 迴圈語句的迴圈體 double 宣告雙精度浮點型...
基礎知識彙總
整型int,浮點型float,複合型complex 基本不使用 字串string,布林型bool,列表list,字典dict,集合set,元組tuple 可變資料型別 list dict set 當刪除第乙個元素的時候,後面的元素向前一定了一次,而for迴圈還是要向後走一步,這樣就錯過了在沒有刪除前...