標籤:結構 執行個體 類 c# namespace
bool類型
bool a=true;
裝箱&拆箱
裝箱:將值類型隱式轉換為參考型別
首先分配一個對象執行個體,然後將值類型的值複製到該執行個體中
int i=10;object obj=i;//將int型的變數i隱式的轉換成參考型別,並將其值賦給object類型的變數obj
拆箱:將參考型別隱式的轉換成值類型
檢查該對象執行個體是否為給定值類型的一個裝了箱的值,將值從執行個體中複製出來
int i=10;object o=i;int j=(int)o;
引用參數&輸出參數
ref 引用參數不建立新的位置,引用參數和其基礎變數操作的是同一個變數
out 輸出參數的值總是與基礎變數相同,該函數成員將在這一個儲存位置儲存新的值,並修改基礎變數的值
int F(int j,out int i){j--;i=j;//在修改i參數的值的同時也修改了i變數的值return i+j;}...int i;int sum=F(100,out i);
class Program { int F(ref int i, int j) { i--; return i + j; } static void Main(string[] args) { int i = 10; Program p = new Program(); int sum = p.F(ref i, 10); Console.WriteLine("sum的值是:" + sum); Console.ReadLine(); } }
類型測試運算子 is as
is運算子用來測定運行時類型是否與給定類型相容,結果為bool
int i=100;bool j=i is object;//判斷變臉i是否可以轉換成object類型
as運算子是將一個值顯示的轉換為一個給定的參考型別,如果轉換失敗,則返回null
int i=10;object j=i as object;//將i由int類型轉換成object類型
foreach語句
int [] arr={2,3,4,5};int sum=0;foreach(int i in arr)//可以;理解為i是第幾個資料{sum+=i;}
命名空間
在同一個命名空間中,各個類可以互相調用,如果在不同的命名空間中,就需要在調用的類之前添加對應的命名空間名稱加點號
namespace Test{class demo1{}class demo2{}class demo3{static void Main(string[] args){Test.demo1 d1=new Test.demo1();Test.demo2 d2=new Test.demo2();}}}
::運算子
在程式中,可能會使用與系統封裝的類相同的的名稱命名的一個類,使用雙冒號可以在指定的命名空間中尋找1標示符
M::test1 t1=new M::test1();//使用::限定為M命名空間中的test1L::test1 t1=new L:;test1();//使用::限定為M命名空間中的test1
seald
seald類,密封類不能作為基類,也不能作為抽象類別,因此不能從密封類派生新的類
seald class Classs1{public void Fun(){}}
虛方法
虛方法可以由衍生類別實現(重寫方法)
...public class Program{public virtual void P1(){Console.WriteLine("program p1");}}public class Test:Program{public override void P1(){Console.WriteLine("Test.p1");}}...
密封方法
使用sealed修飾符,可以防止衍生類別重寫該方法
public class Test{public sealed override void p{Console.WriteLine("Test");}}
屬性
C#特有機制
...public class Program{private string name;publid string Name{get{return name;}set{name=value;}}static void Main(){Program p=new Program();p.Name="hxk";string name=p.Name;console.WriteLine(name);}}
索引器
申明索引器時,需要使用this關鍵字
public class Program{private string[] list;//string類型的數組public string this[int index]//申明索引器,索引為int類型{get{ return list[index];}//擷取list數組中的元素set{if(index>-1&&index<list.Length) list[index]=value;//設定list數組元素的值}}public Program(int count)//建構函式{list=new string[count];for(int i=0;i<count;i++){list[i]=i.toString();}}static void Main(string[] args){int count=100;Program p=new Program(count);for(int i=0;i<count;i++){//通過索引器訪問list數組的元素Console.WriteLine(p[i]+"");if(i%10==0)Console.WriteLine();}}}
解構函式 ~
解構函式是手動釋放類的執行個體佔用的資源,並銷毀類的執行個體
public class Program{~Program(){Console.WriteLine("銷毀類的執行個體");}}
結構
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace Chapter9{ class Program { //聲明結構S public struct S { int i; public S(int i) { this.i = i; } public void F() { Console.WriteLine("今天是" + i + "號。"); } } static void Main(string[] args) { S s = new S(21); s.F(); Console.ReadLine(); } }}
動態數組
namespace Chapter10{ class Program { static void Main(string[] args) { ArrayList l = new ArrayList(); //聲明一個動態數組l l.Add("今天是2012年12月11日"); l.Add(2012); l.Add(12); l.Add(11); foreach (object obj in l) { Console.WriteLine(obj); //將動態數組各元素列印輸出 } Console.ReadLine(); } }}
C#之初級篇