ASP.NET學習筆記2

weixin_30488085發表於2020-04-06
2016.4.7
1、
呼叫類時將類檔案生成操作改為編譯,然後
using _73_ClassAndeObject.App_Code;
 
2、類型別的成員變數都被自動設定為一個恰當的預設值
bool類:false
數值類:0
string類:null
char類:\0
引用型別:null
 
3、訪問修飾符
public:公共訪問
private:私有訪問
protected:只有子類才能訪問,基類和外部程式碼都不能訪問
internal:不能在程式集外被任何型別訪問
protected internal:定義了一個物件的訪問被限制在當前程式集,或者當前程式集從定義它的類所派生的型別中
型別(類、介面、結構、列舉和委託)也可以帶訪問修符,但只能用public和internal
 
4、new例項化
類名 物件變數名=new 類名();
 
5、物件訪問:
MyClass class1 = new MyClass();
Response.Write(class1.add_x() + "<br/>");
類訪問:
Response.Write(MyClass.add_y() + "<br/>");
 
6、程式碼摺疊整理
#region name
#endregion
 
7、分佈類(partial class)使用場合
(1)處理大型專案時,可以將類拆分成幾個檔案,讓多位程式設計師同時進行工作,不會因為只有一個檔案造成彼此覆蓋。
(2)使用自動生成的原始檔時,無需重新建立原始檔即可將程式碼新增到類中。
 
8、解構函式
當某個類的例項被認為是不再有效,並符合析構條件時,呼叫該類的解構函式實現垃圾回收
解構函式,釋放非託管資源
        /// </summary>
        ~SqlDb()
        {
            try
            {
                if (sqlcon != null)
                    sqlcon.Close();
            }
            catch{}
            try
            {
                Dispose();
            }
            catch{}
        }
 
9、使用靜態屬性可以直接通過類級別訪問
private static string companyName;//靜態欄位
public static string Company//靜態屬性
{
   get { return companyName; }
   set { companyName = value; }
}
protected void Page_Load(object sender, EventArgs e)
{
   Employee.Company = "Compay:";/
   Response.Write(Employee.Company);
}

2016.4.10

1、base標籤是用來指定起父類的。

this關鍵字用來代表當前類。

base則是用來代表父類

例如兩個類class A, class B

classB繼承自classA

則,在classB中呼叫classA中的方法,則可用這樣的格式:

base.方法名

Base使用範圍:

(1)呼叫基類上已被其他方法重寫的方法。

(2)指定建立派生類例項時應呼叫的基類建構函式。

 public class hBooks
    {
        public string bookName;
        public string ISBN;
        public hBooks(string bName,string bISBN)
        {
            this.bookName = bName;
            this.ISBN = bISBN;
        }
    }
    public class Sale : hBooks//定義派生類
    {
        public double bookSell;
        public Sale(string bName,string bISBN,double sell)//子類建構函式
                :base(bName,bISBN)//基類建構函式
        {
            bookSell = sell;
        }
    }
 
2、介面的實現
public interface IDrawingObject
    {
        string Draw();
    }
public class Line : IDrawingObject
    {
        public string Draw()
        {
            return "I'm Line.";
        }
    }
 Line l = new Line();
Response.Write("直接呼叫類中的方法:"+l.Draw()+"<br/>");
Response.Write("對介面中的方法呼叫1:" + ((IDrawingObject)l).Draw()+"<br/>");
IDrawingObject myline = new Line();
Response.Write("對介面中的方法呼叫2:" + myline.Draw());
 
3、
基類建構函式的執行要早於子類建構函式
基類建構函式中對於虛方法的呼叫,實際呼叫的是子類中重寫的虛方法
 

2016.4.11
1、實現多重繼承
public interface IPeople
    {
        string Name { get; set; }
        string Sex { get; set; }
    }
public interface ITeacher : IPeople { string teach(); }//繼承公共介面
public interface IStudent : IPeople { string study(); }//繼承公共介面
 
public class person : IPeople, ITeacher, IStudent//多介面繼承
    {
        string name = "";
        string sex = "";
        public string Name { get { return name; } set{ name = value; } }
        public string Sex { get { return sex; } set { sex = value; } }
 
        public string teach() { return "姓名:" + Name + " " + Sex ; }
        public string study() { return "姓名:" + Name + " " + Sex; }
    }
protected void Page_Load(object sender, EventArgs e)
        {
            person per1 = new person();//例項化類物件
            ITeacher itea = per1;//使用派生類物件例項化介面ITeacher
            itea.Name = "Ondina";
            itea.Sex = "male";
            Response.Write(itea.teach()+"<br/>");
            IStudent istu = per1;//使用派生類物件例項化介面IStudent
            istu.Name = "Kanade";
            istu.Sex = "female";
            Response.Write(istu.study());
 
        }
 
2、包含/委託模型
class A
{
public int P{get;set;}
}
class B
{
public A a= new A();
}
使用: B.a.P;
 
3、使用陣列實現虛方法
Drawingobj[] obj = new Drawingobj[4];
obj[0] = new Line();
obj[1] = new Circle();
obj[2] = new Square();
obj[3] = new Drawingobj();
foreach (Drawingobj dobj in obj)
{
   Response.Write(dobj.myDraw()+"<br/>");
}
 
4、過載
方法名相同;引數列表必須不相同(引數型別、引數個數、引數順序);返回值型別可以不相同
不能通過訪問許可權、返回型別、丟擲的異常進行過載,方法的異常型別和數目不會對過載在造成影響
public static string myText(int x,string y){ return x +"-"+ y; }
public static string myText(string y, int x){ return y + "-" + x; }
public static string myText(int x, string y,double z) { return x + "-" + y + "-" + z; }
string ol1 = OL.myText(1,"2");
string ol2 = OL.myText("3", 4);
string ol3 = OL.myText(5,"6",7.8);
Response.Write(ol1+" "+ol2+" "+ol3);
 

轉載於:https://www.cnblogs.com/xingye3327/p/5380119.html

相關文章