[C# Tips]再談實值型別的裝箱和拆箱

Freesc Huang @ HUST All Rights Reserved2008-2-11Keywords.NET

[C Tips]善待無符號數

猜猜下面代碼的輸出是什嗎?Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->#include <stdio.h>int array[] = {1,2,3,4,5,6,7,8,9,10};#define TOTAL_ELEMENTS sizeof(array)/sizeof(array[0])int main(){    int d = -1

C# tips —實值型別的裝箱和拆箱

裝箱過程,如:myStruct myobj= new myStruct();object baseobj =myobj;在上述隱式轉換中,myobj的內容被複製到堆上,放在一個裝箱的對象上,baseobj對象引用設定為該對象。讓我們來看看在後台發生什麼吧:實際上在最初定義myStruct結構時,.NET FX

[C#.Tips]也來談談介面欺詐

不得不先說明一下,這又是一篇跟實值型別的裝箱拆箱有關的文章,儘管我之前已近寫了兩篇隨筆來闡述這個很基礎的問題了。它們分別在:這裡和這裡。本文中的程式碼範例出自後者,稍作了修改。我們知道C#是一門“安全”的的語言,以至於它不讓我們修改已裝箱實值型別執行個體中的欄位。因為這種嘗試會帶來出乎意料的效果。下面就來解釋一下為什麼會有這種讓很多程式員“意外”的情況發生以及如何“欺騙”C#來實現程式員真正的意圖,儘管那樣做不是合理的方式。首先還是把我以前在這裡提到的那段老代碼翻出來: 1    /**////

[原創]一步一步用C#編寫三國殺(一):規則和需求描述

原創文章,轉載請保留作者署名! 最近做翻譯做的頭疼,疼過之餘,想想之前公司內組織的三國殺開發興趣小組在三國殺開發問題上幾乎又停滯了。於是又翻出來搞了搞,這次卻搞的有點像模像樣了,特地把思路和方法都共用出來,一起學習。 三國殺在上海是挺風靡的,如果你還不知道玩法和規則,請猛擊這裡。 今天要說的是實現的第一步。為了盡量簡化需求,我們最初要實現的東西也挺簡單,就是能支援兩個玩家自動對戰。具體的描述如下:在一個情境中設定兩個玩家,遊戲的牌堆中只有三種基本牌:殺、閃、桃。其中,只有殺和桃是屬於主動性遊戲牌

[原創]一步一步用C#編寫三國殺(二):牌堆的設計

原創文章,轉載請保留作者署名! 前一節說到了一些基礎性的定義。這一節開始將進入流程的分析。 首先,在遊戲的情境建立之後,你就必須有一個牌堆。對於目前的需求來說,只要有手牌的牌堆即可;儘管後面可能還要有身份牌堆和武將牌堆,但目前只考慮手牌,即遊戲牌。於是有以下定義: Code highlighting produced by Actipro CodeHighlighter

[原創]一步一步用C#編寫三國殺(三):設計流程

原創文章,轉載請保留作者署名! 前面已經說了牌堆的設計,那麼現在就正式進入流程,滿足我們在(一)中所說的需求。 由於在(二)中已經說了要維護擴充,因此對於之前定義的Scene,則需要定義一個所選擇的擴充包,代碼如下: 擴充包 Code highlighting produced by Actipro CodeHighlighter

[C Tips] 數組名一定代表指向數組第一個元素的指標——–嗎?

無數的教科書都幾乎沒有嚴肅認真的面對這個問題。數組名就一定代表指向數組第一個元素的指標嗎?猜猜下面的代碼輸出是怎麼樣的:Code highlighting produced by Actipro CodeHighlighter

[C# Tips] 有趣的類型靜態構造器

這是C#中一個有趣的現象,也許您從中可以窺見些許CLR在構造類型時的行為,以及JIT編譯的觸發式編譯過程。看下面一段代碼: 1    class Program 2    { 3        static void Main() 4        { 5            myValueType1 type1 = new myValueType1(); 6            Console.WriteLine(myValueType1.myInt); 7            Cons

C#4.0新特性之(一)動態尋找

 C#4.0新特性之(一)動態尋找   在大神Anders的領導下,C#這門語言也越來越快地朝著程式設計語言宇宙第一神器進化,C#4.0的新特徵都是圍繞“動態”(dynamic)的概念的,本文我們先來看看第一個新特性:動態尋找(Dynamic Lookup)。1.初識dynamic動態尋找允許動態(即在運行時)實現對某個對象的操作與物件類型的綁定,而不管這個對象是來自COM,IronPython,HTML DOM還是CLR的反射。你可以在程式中繞過編譯器的類型檢查,而把類型的匹配(lookup)

C#4.0新特性之(三)協變與逆變

C#4.0新特性之(三)協變與逆變1.C#3.0以前的協變與逆變  如果你是第一次聽說這個兩個詞,別擔心,他們其實很常見。C#4.0中的協變與逆變[1](Covariance and contravariance)有了進一步的完善,主要是兩種運行時的(隱式)泛型型別參數轉換。簡單來講,所謂協變(Covariance)是指把類型從“小”升到“大”,比如從子類升級到父類;逆變則是指從“大”變到“小”,兩者各有不同的條件和用途。下面的例子示範了C#3.0以前對協變與逆變支援[2] : 代碼1

C#4.0新特性之(四)新的LINQ擴充方法-Zip()

C#4.0新特性之(四)新的LINQ擴充方法-Zip()1.簡介  所謂zip(中文有拉鏈的意思),就是像拉鏈一樣,把兩個list縫合在一起。Python中有個zip函數可以用來方便的合并兩個或者多個集合,例如:Code highlighting produced by Actipro CodeHighlighter

C#建立Windows服務

利用VS.NET建立C# Windows服務在很多應用中需要做windows服務來操作資料庫等操作,比如 (1)一些非常慢的資料庫操作,不想一次性去做,想慢慢的通過服務定時去做,比如定時為Database Backup等 (2)在.net Remoting中利用windows服務來做Host 利用vs.net我們可以在幾分鐘之內建立其windows服務,非常簡單 下面說一下步驟 1. 建立一個項目 2. 從一個可用的項目模板列表當中選擇Windows服務 3. 設計器會以設計模式開啟 4.

C#4.0新特性之(二)具名引數,選擇性參數與COM互操作

 C#4.0新特性之(二)具名引數,選擇性參數與COM互操作1.簡介  之前C#(2.0)和java一樣是一門的純粹的物件導向的語言,他們都使用重載而不是選擇性參數。但是實際上使用的其他外部程式,COM組件卻經常不要求指定所有參數(這在很多VC,VB編寫的組件或者操作IronPython的對象的時候很常見,他們一直使用選擇性參數)。這會導致一個C#程式員不得不用Type.Missing塞滿整個參數列表。不過C#4.0終於支援具名引數/選擇性參數了。程式員可以在方法調用的時候通過具名引數指定選擇性

Sandcastle—-強大的C#文檔產生工具

     最近客戶索要產品的二次開發類庫文檔,由於開發過程中並沒有考慮過此類文檔,而且項目規範比較,期間比較長,經手人比較多,還真是麻煩,如果人工製作文檔需要是一個比較大的工程.還好有這個文檔產生工具,能夠根據項目產生文檔,而且格式看起來確實很專業.      Sandcastle是微軟官方的文檔產生工具,NDoc開發停止後,這個貌似也是唯一的一個這方面的工具。它從dll檔案及其xml注釋檔案能夠產生完整的協助文檔,支援多種產生格式(Helpe1x:chm, Helper2x:Hxs,

[CLR via C# 3rd讀書筆記]4.4 How Things Relate at Runtime

JIT之前在CLR第一次調用一個method時,當然首先要JIT這段代碼。JIT之前就需要CLR保證所需的Assembly都可以成功的被load。如果load成功,CLR會利用Assembly中的metadata在託管堆上建立要使用到的Type本身(Type Object)Type Object的結構,由兩部分組成第一部分包含Type object pointer,Sync block index(在託管堆上的所有對象都會有這兩個Field),以及該Type種定義的static

C++擷取串口列表的方法

int CUtil::GetSystemPorts(CString *pNameList, CString *pPortList)   {       CRegKey RegKey;       int nCount = 0;              if(RegKey.Open(HKEY_LOCAL_MACHINE, "Hardware\\DeviceMap\\SerialComm") == ERROR_SUCCESS)       {          

C#讀書筆記—-淺度複製與深度複製

前提條件:從一個變數到另一個變數按值複製對象,而不是按引用複製對象(即以與結構相同的方式複製)可能非常複雜。因為一個對象可能包含許多個物件的引用,例如欄位、成

老趙演講:Why Java Sucks & C# Rocks 錄音清晰版.

我個人是非常崇拜老趙的,可惜人不在上海無法現場光臨他的關於這次語言層面上的演講.雖然這次演講引起了部分Java程式員的反感,但是的確,從它講這兩種語言的發展史就能很清晰地感覺到C#語言的輕便性.這次演講的錄音是他的朋友韋恩卑鄙提供的(話說我的英文名也是Wayne.呵呵).我把它用牛頓3放大了下聲音,並壓縮一下波形,讓老趙的聲音更清晰平穩,這樣聽就不費勁,也不怕聲音忽大忽小了.邊聽錄音邊看PPT,效果灰常好..哈哈!   另外,我的歡迎大家訪問我的獨立部落格.http://bugunow.com/

用C#實現網頁瀏覽器功能

準備工作:    建立一個Windows應用程式然後在表單上畫一個textBox和一個Button及一個webBrowser。    雙擊Button在Button的單擊事件中編寫代碼 CodeCode highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->private void button_Click(object sender, EventArgs e) {

總頁數: 4314 1 .... 468 469 470 471 472 .... 4314 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.