程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> 關於C# >> c#的object,new操作符及類型轉換

c#的object,new操作符及類型轉換

編輯:關於C#

所有類型最終都從System.Object類型派生。

最基本方法(object的公共方法):

1.Equals:如果兩個對象具有相同的值,返回true.

2.GetHashCode:返回對象值得一個哈希碼,如果某個類型的對象要在一個哈希表集合眾作為key使用,該類型應重寫該方法。

3.ToSting,返回一個String對象

4.GetType:返回從Typt派生的一個對象實例,指出該對象是什麼類型。返回的type對象可以和反射類配合使用,從而獲取與對象的類型有關的元數據信息。

以下為受保護的方法

5.MemberwiseClon:非虛方法,能創建類型的一個新實例,並將新對象的實例字段設與this對象的實例字段完全一致,返回的是一個對新實例的一個引用。

6.Finalize:在垃圾回收時會調用該虛方法。

關於new操作符 曹衍濤

Employee e=new Employee("ConstructorParam1");

1.他計算類型及其所有基類型中定義的所有實力字段需要的字節數。 堆上每一個對象都需要一些額外成員——“類型對象指針(type object pointer)

”和“同步索引塊(sync block index)”,這些成員由ClR(common language runtime)用於管理對象。這些額外成員的字節數會計入對象大小。

2.他從托管堆中分配制定類型要求的字節數,從而分配對象的內存,分配的所有字節都設為零。

3.他初始化對象的類型對象指針和同步索引成員。

4.調用類型的實例構造器,向其傳入在對new的調用中制定的任何實參。(上邊ConstructorParam1即為實參)

new執行完這些操作後會返回指向新建對象一個引用(或指針)。上邊這個引用會保存到變量e中,後者具有Employee類型

無法顯示釋放分配給一個對象的內存,CLR采用垃圾回收機制。

類型轉換

CLR最重要的特性之一就是類型安全性。

c#可以隨意將一個對象轉換為他的任何基類,當將該類型轉化為他的派生類時需要進行顯示轉換,該轉換可能會在運行時失敗。

使用is和as操作符來轉型

is檢查一個對象是否兼容於指定類型,返回true或false,is操作符不會拋出異常。

Object o=new Object();

Boolean b1 =(o is Object)//返回true

Boolean b2 =(o is Employee)//返回false

如果對象引用為null,總是返回false

is通常這樣使用

if(o is Employee)

{

Employee e=(Employee) o;

//在if剩余語句中用e

}

這樣寫CLR實際檢查了兩遍數據類型

as為其簡化寫法

Employee e= o as Employee;

if(e!=null)

{

//剩余語句用e

}

這樣寫CLR檢查o是否兼容Employee,是的話返回同一對象的非null引用。

來源:http://www.cnblogs.com/lanrenqilanming/archive/2017/01/06/6256858.html

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