熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

C#學習筆記(一)

2013-11-13 10:12:32  來源: .NET編程 

  finalize方法:終結器

  實現了終接器會大大的降低程序的性能

  釋放模式:【非托管資源釋放】

  手動釋放{dispose()方法或者close()方法True非托管資源釋放或者是托管資源釋放【我們的類包含了其他 類這個時候我麼就可以在這裡對其進行釋放而一般情況下托管資源是被垃圾回收站回收的】}阻止finalize的調用

  自動釋放(finalize()方法false非托管資源釋放)

  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();

  {

  consolewriteline();

  }

  }

  //對於方法的調用是先實例化然後再進行調用:

  Mod mod=new Mod();//實例化

  moddefaultMethod();//調用過程

  兩個類要能夠相互可見的話可以將這兩個 類放在同一個命名空間下面

  類專用修飾符:

  sealed:不能被繼承的類;

  partial:能聲明在不同的文件中的類

  類型的轉換:

  隱式轉換:

  顯式轉換:

  代碼:

  class conversions

  {

  static void main()

  {

  int a=;//systemint

  long b;//systemint

  b=a;//隱式轉換

  consolewriteline(a);

  }

  }

  可以先對於上面設置的兩個變量進行初始化然後再進行輸出操作

  顯式轉換就是這樣子的:a=(int)b;

  checked和unchecked操作符和語句:

  在顯式轉換前面加入checked操作服

  在程序中有一句話:

  messageboxshow(fashengyichu)能夠彈出一個對相框

  這裡還有一種感覺就是:

  b=b+;

  b+=;

  這個時候最開始的初始化b為byte類型所以這兩句話是有區別的上面第一句話在操作的時候是很容易出錯的修改的方式是:在右邊的表達式上加入:

  b=(byte)(b+);

  這個時候跟下面那句話就保持一致了

  而下面這句話因為在右邊的是byte類型的常量所以就十分直接的隱式轉換成了byte類型了

  引用類型的轉換:

  CLR允許強制的轉化

  Fruit f=new Apple();//直接說明了子類可以被強制轉換成為自己的父類

  而要強調的是父類不能轉換成任何一個子類

  要想確切的知道一個對象的類型可以調用gettype()方法

  type t=fgettype();//*********

  Apple a=(Apple)f;//類型轉換的方式

  也可以在輸出的語句中對於參數中的對象進行轉換

  用is操作符:

  consolewriteline(f is fruit);

  consolewriteline(f is apple);

  consolewriteline(a is fruit);

  consolewriteline(a is apple);

  運行的結果是:

  True;

  false;

  true;

  true;

  這裡我們知道了在使用is操作符的時候只會打印輸出bool值也就是true和false

  as的意義:比方說:apple a=f as apple;//這裡說明的是如果f兼容與apple那麼a的返回值就是true反之就是false這樣下面的判斷語句就會用判斷表達式:a!=NULL

  foreach循環 ??????

  controls屬性表示的是返回值是一個集合

  foreach(control c in ntrols)

  {

  emsadd(cname);

  control c=c as button;

  if(c!=null)

  {

  ctext=kkkkkkkkkkk;

  }

  }//強制類型轉換的一個簡單的例子

  屬性:

  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==||values==)

  {

  sex=values;

  }

  else{

  consolewriteline(性別只能為);

  }

  }

  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();

  zsname=(張三);

  zssex=();

  consolewriteline(姓名:+zsgetname+性別:+zsgetsex)

  zsname=張三;

  zssex=;

  consolewriteline(姓名:+zsname+性別:+zssex)

  }

  屬性的調用跟類的字段的調用是一模一樣的

  static屬性:只能訪問靜態的

  彈出對話框的上面就是Using systemwindowsforms;

  年齡屬性應該根據生日生成一個動態的字段

  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)

  {

  thisname=name;

  }

  public string name

  {

  get(return name;)

  }

  }

  class test

  {

  static void main()

  {

  arrclass[] a=new arrclass[];

  a[]=new arrclass();

  a[]=new arrclass();

  a[]=new arrclass();

  consolewriteline(a[]=+a[]name);

  consolewriteline(a[]=+a[]name);

  consolewriteline(a[]=+a[]name);

  }

  }

  要定義一個索引器就必須要this還要加上中括號

  索引器只需要申明一個實例而類需要聲明多個實例

  哈希表:【容器】

  key通常可用來快速查找

  給hashtable裡面加值是通過add來進行操作的

  代碼:

  Class indexclass//帶索引器的類

  {

  private hashtable name=new hashtable();

  public string this[int index]

  {

  get{return name[index]tostring();}

  set{nameadd(indexvalue);}

  }

  }

  class test

  {

  static void  main()

  {

  //索引器的使用

  indexclass b=new indexclass();

  b[]=zghan;

  b[]=kkkkk;

  b[]=ksldjflksdj;

  consolewriteline(jjjj+b[]);

  *******//此處略去三個字!

  }

  }

  索引器和數組的比較:

  類數組的 存放 :

  索引器有get訪問器和set訪問器沒有存放變量的地方

  索引器允許重載

  Int[] a=new int[]

  a[]=;

  a[]=;

  a[]=;//數組的存放

  class arrclass

  {}

  

  arrclass[]a=new arrclass[];

  a[]=new arrclass();

  a[]=new arrclass();

  a[]=new arrclass();

  //類數組的 存放

  this的關鍵作用:索引器只能使用this

  public int this[string aname]

  {

  get{

  }

  set{

  }

  }

  索引器不能被聲明為靜態的

  代碼實例:

  Using system;

  using systemcollections;

  //姓名課程id成績

  class coursescore

  {

  private string name;

  private int courseid;

  private int score;

  public coursescore(string nameint courseidint score)

  {

  thisname=name;

  useid=couseid;

  thisscore=score;

  }

  public string name

  {

  get{}

  set{}

  }

  }

  class coursescoreindexer

  {

  private arraylist arrcoursescore;

  public couresescoreindexer()

  {

  arrcoursescore=new arraylist();

  }

  public int this[string nameint courseid]

  {

  get

  {

  foreach(coursescore cs in arrcoursescore)

  {

  if (csname==name$$urseid==courseid)

  {

  return csscore;

  }

  }

  return ;

  }

  set

  {

  arrcoursescoreadd(new coursescore(namecourseidvalue))

  }

  }

  public arraylist this[string name]

  {

  get{}

  }

  }

  class Test

  {

  static void main()

  {

  coursescoreindexer csi=new coursescoreindexer();

  csi[]=;

  consolewriteline(csi[]);

  consolewroteline(chengjiwei:)

  }

  }

  現在將的是C#程序語言的規范:

  bitarray類;

  可以存放任何長度的

  左移相當於乘以;右移相當於除以

  索引器的返回值是bool值所以在實現的時候最開始的一句話是:

  public bool this[int index]

  {}

  >>符號表示的是往右移動位數;

  <<符號表示的是往左移動位數;

  &運算符:都是的情況下才會最終的結果是

  ~運算符在C#中是按位求補的操作:;:

  如何使用bitarrary類:


From:http://tw.wingwit.com/Article/program/net/201311/12906.html
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.