c# 基礎 object ,new操作符,類型轉換

来源:http://www.cnblogs.com/lanrenqilanming/archive/2017/01/06/6256858.html
-Advertisement-
Play Games

所有類型最終都從System.Object類型派生。 最基本方法(object的公共方法): 1.Equals:如果兩個對象具有相同的值,返回true. 2.GetHashCode:返回對象值得一個哈希碼,如果某個類型的對象要在一個哈希表集合眾作為key使用,該類型應重寫該方法。 3.ToSting ...


所有類型最終都從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引用。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • C#反序列化XML異常:在 XML文檔(0, 0)中有一個錯誤“缺少根元素” ...
  • 1.加群 群號:104390185,下載這個文件並解壓 用VS2015打開aspnet-zero-1.9.0.1 2.修改Web項目web.config連接字元串 3.還原NuGet包 在解決方案中,右鍵選擇還原NuGet包 4.創建資料庫 打開程式包管理器控制台 然後選擇"EntityFramew ...
  • 站點關係 管理站點間的關係,站點可以有子站點,子站點繼承父站點的部分配置數據,同時子站點還可以根據需要,本地化由父站點繼承而來的數據。通過繼承和本地化,可以讓子站點在用最小的改動代價,來完成一個與父站點功能類似,但有部分不同的網站。 在創建子站點時,可以選擇使用與Kooboo CMS中任何已經存在的 ...
  • 我總結了一下出現證書無法載入的原因有以下三個 1.證書密碼不正確,微信證書密碼就是商戶號 解決辦法:請檢查證書密碼是不是和商戶號一致 2.IIS設置錯誤,未載入用戶配置文件 解決辦法:找到網站使用的應用程式池-->右擊-->高級設置-->打開如下圖-->在載入用戶配置文件選擇true 3.如果以上兩 ...
  • 本文詳細講述了C#中MessageBox.Show用法以及VB.NET中MsgBox用法,有需要的朋友可以參考下,希望能幫到大家。 ...
  • Kooboo CMS本著功能獨立分離的原則,將站點分為三部分組成:用戶管理,站點管理和內容資料庫管理。各個功能之間既可獨立使用,也可以容易組成在一起形成一個完整的系統。 用戶管理 管理整個系統內的用戶和角色許可權定義。管理員在通過用戶管理模塊管理用戶的相關信息,包括:用戶名,密碼,Email,是否為超 ...
  • 今天,測試一個項目的時候,拋出了這個莫名其妙的異常,然後就開始了一天的調試之旅... 花了很長時間,沒有從代碼找出任何問題... 那麼到底哪裡出問題呢? 根據下麵那段長長的錯誤日誌: 上百度,上谷歌... 有人說會不會是Lazy載入的問題,說他試過設置Lazy=false就不會出現這個問題了???納 ...
  • 廢話不多說,直接上代碼(PS:我就喜歡簡單、直接、粗暴) using System;using System.Collections.Generic;using System.Linq;using System.Runtime.Remoting.Messaging;using System.Text ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...