finalize方法:終結器
實現了終接器會大大的降低程序的性能
釋放模式:【非托管資源釋放】
手動釋放{dispose()方法或者close()方法
自動釋放(finalize()方法
public class myresource:IDisposable
{
private bool disposed=false;
public void dispose()
{
}
public void close()
{
}
~myresource()
{
}
private void dispose(bool disposing)
{
判斷句//
}
}
類的修飾符:
訪問控制修飾符;[包括了:default;public;private;internal;protected;protected internal
Class mod
{
void defaultMethod();
{
console
}
}
//對於方法的調用是先實例化
Mod mod=new Mod();//實例化
mod
兩個類要能夠相互可見的話可以將這兩個 類放在同一個命名空間下面
類專用修飾符:
sealed:不能被繼承的類;
partial:能聲明在不同的文件中的類
類型的轉換:
隱式轉換:
顯式轉換:
代碼:
class conversions
{
static void main()
{
int a=
long b;//system
b=a;//隱式轉換
console
}
}
可以先對於上面設置的兩個變量進行初始化
顯式轉換就是這樣子的:a=(int)b;
checked和unchecked操作符和語句:
在顯式轉換前面加入checked操作服
在程序中有一句話:
messagebox
這裡還有一種感覺就是:
b=b+
b+=
這個時候最開始的初始化b為byte類型
b=(byte)(b+
這個時候跟下面那句話就保持一致了
而下面這句話
引用類型的轉換:
CLR允許強制的轉化
Fruit f=new Apple();//直接說明了子類可以被強制轉換成為自己的父類
而要強調的是父類不能轉換成任何一個子類
要想確切的知道一個對象的類型可以調用gettype()方法
type t=f
Apple a=(Apple)f;//類型轉換的方式
也可以在輸出的語句中對於參數中的對象進行轉換
用is操作符:
console
console
console
console
運行的結果是:
True;
false;
true;
true;
這裡我們知道了在使用is操作符的時候只會打印輸出bool值
as的意義:比方說:apple a=f as apple;//這裡說明的是如果f兼容與apple
foreach循環 ??????
controls屬性表示的是返回值是一個集合
foreach(control c in ntrols)
{
ems
control c
if(c
{
c
}
}//強制類型轉換的一個簡單的例子
屬性:
class user
{
private string m_name;
private string m_sex;
//
public void setname(string values)
{name=values;}
public string getname()
{
return name;
}
public void setsex(string values)
{
if (values==
{
sex=values;
}
else{
console
}
}
public string getsex()
{
return sex;
}
public name
{
get{
return name;
}
set{
name=values;
}
public sex
{
get{return sex}
set{
[if判斷語句]
}
}
}
//
}
class property
{
static void main()
{
user zs=new user();
zs
zs
console
zs
zs
console
}
屬性的調用跟類的字段的調用是一模一樣的
static屬性:只能訪問靜態的
彈出對話框的上面就是Using system
年齡屬性應該根據生日生成一個動態的字段
private static int m_logincount;
public user()
{m_logincount++;}
public static int logincount
{get
{
return m_logincount;
}
}//只讀屬性
索引器:
類似於屬性
class arrclass
{
private readonly string name;
public arrclass(string name)
{
this
}
public string name
{
get(return name;)
}
}
class test
{
static void main()
{
arrclass[] a=new arrclass[
a[
a[
a[
console
console
console
}
}
要定義一個索引器就必須要this
索引器只需要申明一個實例
哈希表:【容器】
key通常可用來快速查找
給hashtable裡面加值是通過add來進行操作的
代碼:
Class indexclass//帶索引器的類
{
private hashtable name=new hashtable();
public string this[int index]
{
get{return name[index]
set{name
}
}
class test
{
static void main()
{
//索引器的使用
indexclass b=new indexclass();
b[
b[
b[
console
*******//此處略去三個字!
}
}
索引器和數組的比較:
類數組的 存放 :
索引器有get訪問器和set訪問器
索引器允許重載
Int[] a=new int[
a[
a[
a[
class arrclass
{}
arrclass[]a=new arrclass[
a[
a[
a[
//類數組的 存放
this的關鍵作用:索引器只能使用this
public int this[string aname]
{
get{
}
set{
}
}
索引器不能被聲明為靜態的
代碼實例:
Using system;
using systemcollections;
//姓名
class coursescore
{
private string name;
private int courseid;
private int score;
public coursescore(string name
{
this
useid=couseid;
this
}
public string name
{
get{}
set{}
}
}
class coursescoreindexer
{
private arraylist arrcoursescore;
public couresescoreindexer()
{
arrcoursescore=new arraylist();
}
public int this[string name
{
get
{
foreach(coursescore cs in arrcoursescore)
{
if (cs
{
return cs
}
}
return
}
set
{
arrcoursescore
}
}
public arraylist this[string name]
{
get{}
}
}
class Test
{
static void main()
{
coursescoreindexer csi=new coursescoreindexer();
csi[
console
console
}
}
現在將的是C#程序語言的規范:
bitarray類;
可以存放任何長度的
左移相當於乘以
索引器的返回值是bool值
public bool this[int index]
{
>>符號表示的是往右移動位數;
<<符號表示的是往左移動位數;
&運算符:都是
~運算符在C#中是按位求補的操作
如何使用bitarrary類:
From:http://tw.wingwit.com/Article/program/net/201311/12906.html