程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#學習筆記--1

C#學習筆記--1

編輯:C#入門知識

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();
{
    console.writeline("");
}

//對於方法的調用是先實例化,然後再進行調用:
Mod mod=new Mod();//實例化。
mod.defaultMethod();//調用過程。

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


類專用修飾符:
sealed:不能被繼承的類;
partial:能聲明在不同的文件中的類。


類型的轉換:
隱式轉換:
顯式轉換:
代碼:、
class conversions
{
    static void main()
{
   int a=4;//system.int32
   long b;//system.int64
    b=a;//隱式轉換
    console.writeline(a);
}
}

可以先對於上面設置的兩個變量進行初始化,然後再進行輸出操作。
顯式轉換就是這樣子的:a=(int)b;

checked和unchecked操作符和語句:
在顯式轉換前面加入checked操作服。

在程序中有一句話:
messagebox.show("fashengyichu")能夠彈出一個對相框。

這裡還有一種感覺就是:
b=b+100;
b+=100;
這個時候最開始的初始化b為byte類型,所以這兩句話是有區別的,上面第一句話在操作的時候是很容易出錯的,修改的方式是:在右邊的表達式上加入:
b=(byte)(b+100);
這個時候跟下面那句話就保持一致了。
而下面這句話,因為在右邊的是byte類型的常量,所以就十分直接的隱式轉換成了byte類型了。

引用類型的轉換:
CLR允許強制的轉化。

Fruit f=new Apple();//直接說明了子類可以被強制轉換成為自己的父類。
而要強調的是父類不能轉換成任何一個子類。

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

type t=f.gettype();//*********

Apple a=(Apple)f;//類型轉換的方式。
也可以在輸出的語句中對於參數中的對象進行轉換。

用is操作符:
console.writeline(f is fruit);
console.writeline(f is apple);
console.writeline(a is fruit);
console.writeline(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 this.controls)
{
   listbox1.items.add(c.name);
   control c1=c as button;
    if(c1!=null)
{
    c1.text="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{
    console.writeline("性別只能為“男”或“女”");
}
}
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.name=("張三");
    zs.sex=("男");
    console.writeline("姓名:"+zs.getname+"性別:"+zs.getsex)
 zs.name="張三";
    zs.sex="男";
    console.writeline("姓名:"+zs.name+"性別:"+zs.sex)
}

屬性的調用跟類的字段的調用是一模一樣的。
static屬性:只能訪問靜態的。

彈出對話框的上面就是Using system.windows.forms;

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

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.name=name;
}
public string name
{
   get(return name;)
}
}
class test
{
   static void main()
{
   arrclass[] a=new arrclass[10];
a[0]=new arrclass("");
a[1]=new arrclass("");
a[2]=new arrclass("");
console.writeline("a[0]="+a[0].name);
console.writeline("a[1]="+a[1].name);
console.writeline("a[2]="+a[2].name);
}
}

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

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

哈希表:【容器】
key通常可用來快速查找。
給hashtable裡面加值是通過add來進行操作的。

代碼:
Class indexclass//帶索引器的類。
{
   private hashtable name=new hashtable();
   public string this[int index]
{
   get{return name[index].tostring();}
   set{name.add(index,value);}
}
}
  class test
 {
   static void  main()
{
//索引器的使用。
   indexclass b=new indexclass();
   b[100]="zghan";
   b[200]="kkkkk";
   b[300]="ksldjflksdj";
console.writeline("jjjj"+b[100]);
*******//此處略去三個字!
}
}

索引器和數組的比較:
類數組的 存放 :
索引器有get訪問器和set訪問器。沒有存放變量的地方。
索引器允許重載,

Int[] a=new int[3]
a[0]=1;
a[1]=2;
a[2]=3;//數組的存放。

class arrclass
{}
......
arrclass[]a=new arrclass[3];
a[0]=new arrclass();
a[1]=new arrclass();
a[2]=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 name,int courseid,int score)
{
this.name=name;
this.couseid=couseid;
this.score=score;
}
  public string name
{
  get{}
  set{}
}
}
class coursescoreindexer
{
private arraylist arrcoursescore;
public couresescoreindexer()
{
    arrcoursescore=new arraylist();
}
  public int this[string name,int courseid]
{
  get
{
   foreach(coursescore cs in arrcoursescore)
{
   if (cs.name==name$$cs.courseid==courseid)
{
  return cs.score;
}
}
return -1;
}
set
{
arrcoursescore.add(new coursescore(name,courseid,value))
}
}

public arraylist this[string name]
{
  get{}
}
}
class Test
{
static void main()
{
  coursescoreindexer csi=new coursescoreindexer();
  csi["",1]=90;
  console.writeline(csi["",1]);
  console.wroteline("chengjiwei:")
}
}

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

bitarray類;
可以存放任何長度的。

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

索引器的返回值是bool值,所以在實現的時候最開始的一句話是:
public bool this[int index]
{......}

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

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

~運算符在C#中是按位求補的操作。【0:1;1:0.】


如何使用bitarrary類:

本文出自 “黎黎原上草” 博客

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved