Time of Update: 2018-12-07
在文章的開頭,我要感謝部落格園的各位看官對小弟的上一篇文章的支援。就像有網友說的一樣,這本書的前三章確實比較難懂,需要用心和反覆的去讀並揣摩(當然,不要去癡迷)在進行下一章內容前(由於筆者水平有限,還沒有完全理解,故本章不會進行講述),我想先說個基本概念,什麼是堆棧?(有點新瓶裝老酒的感覺,但是理解堆棧真的很重要)首先,我們要非常的清楚堆和棧是兩個不同的概念(儘管我們經常把堆棧一起說)在C#中,我們把參考型別放在堆中,把實值型別放在棧中(如果對實值型別和參考型別不是很明白,請百度或者google
Time of Update: 2018-12-07
最近由於出差在外地,再加上自己在學習一些新的知識,所以遲遲沒有再看這本書,更沒有更新此系列的後續內容,但是這本書確實是本好書,不想就此放下,碰巧今天也比較悠閑,於是今天又一次回顧了之前的內容,並開始了新的閱讀。今天開始盡量儘快進行更新。
Time of Update: 2018-12-07
最近用c#做了個比較小工具比較手機號碼,完成兩個檔案對比去重且合并的。由於經過尋找資料發現用雜湊表比較效率較高。初步程式如下: string[] filemobile1 = File.ReadAllText(cb_file1.SelectedItem.ToString(), Encoding.GetEncoding("gb2312")).Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
Time of Update: 2018-12-07
在C#中給方法傳遞參數的方式主要有四種:值傳遞、引用傳遞(ref)、輸出傳遞(out)和參數傳遞(params)。1.值傳遞自不必多說,就是我們採用最多的方式。這種方式傳遞的參數只是原參數的一個拷貝,不改變原參數的值。2.ref和out類似,同樣都不開闢新的記憶體地區,是在原參數上直接操作,自然會改變原參數的值。它們的區別在於:ref方式在將參數傳遞給調用方法時,必須先初始化參數,而out方式無需初始化;out方式在調用方法結束前必須給參數賦值。3.params方式是一種傳遞的參數數目可變的方式
Time of Update: 2018-12-07
首先註明:轉貼自李建忠先生的網站上,www.lijianzhong.com,以此來激勵自己多學習。接到一位前不久C#培訓學員的來信,這位學員雖然以前功底欠缺,但學習勁頭很足,在培訓中成長很快。即便基本吃透《.NET架構(修訂版)》還嫌不夠過癮,一心要成為高手中的高手。來信的目的是希望我來指點進階方向。說實話,我一般不想在這些有關個人發展的大是大非的問題上給人指導,因為太多親身或眼見的經曆告訴我人生實在是很難捉摸,善良、智慧、勤奮這些我們珍視的品格常常會碰到可怕的現實。我感覺我鼓勵一個人的時候,我
Time of Update: 2018-12-07
1.public static function addCallback(functionName:String, closure:Function):void2.ExternalInterface.addCallback("CallBack",TestFunction);3.<invoke name="CallBack" returntype=\"xml\"> <arguments> <string> Sent by App </string&
Time of Update: 2018-12-07
virtual和abstract都是用來修飾父類的,通過覆蓋父類的定義,讓子類重新定義。它們有一個共同點:如果用來修飾方法,前面必須添加public,要不然就會出現編譯錯誤:虛擬方法或抽象方法是不能私人的。畢竟加上virtual或abstract就是讓子類重新定義的,而private成員是不能被子類訪問的。但是它們的區別很大。(virtual是“虛擬”,abstract是“抽象的").(1)virtual修飾的方法必須有實現(哪怕是僅僅添加一對大括弧),而abstract修飾的方法一定不能實現。
Time of Update: 2018-12-07
理解C#記憶體回收機制我們首先說一下CLR(通用語言執行平台,Common Language Runtime)它和Java虛擬機器一樣是一個運行時環境,核心功能包括:記憶體管理、程式集載入、安全性、非同步處理和線程同步。CTS(Common Type
Time of Update: 2018-12-07
好好學習底層運行機制,從CLR via C# 開始。CLR的執行模型: CLR:Common Language Runtime,是一個可由多種程式設計語言使用的“運行時”。CLR的核心功能(比如記憶體管理、程式集載入、安全性、異常處理和線程同步)可由面向CLR的所有語言(C#,Visual Basic,F#等)使用。1.將原始碼編譯成託管模組:
Time of Update: 2018-12-07
今天這篇文章會不是很長,主要是給大家介紹一下我們CLR中的一些基元類型,最近年底,確實比較忙。希望大家理解下。 記得我剛開始學會寫程式的時候一直都鬧不明白,什麼時候要用string而什麼時候又要用String(當然,我是半路出家的當時基礎只是也不是很好,大俠們就不要噴我了吧 ^ _ ^)當過了一段時間時候,自己又實驗了一下感覺貌似沒什麼區別,又尋找了寫資料,發現我們在C#
Time of Update: 2018-12-07
//根據年份計算該年有多少周public static int GetWeekCountOfYear(int strYear) { DateTime firstDay = DateTime.Parse(strYear.ToString() + "-01-01");int weekOfFirstDay = Convert.ToInt32(firstDay.DayOfWeek);//得到該年的第一天是星期幾int countWeek;//該年有多少周////
Time of Update: 2018-12-07
近日,小白要用到遠程開機的功能,網上大多介紹的是Magic Packet的工具。實際上,此Magic Packet是AMD公司開發的,請在google.cn中搜尋Magic Packet Technology。原理上我們不用深入,實現上是發一個BroadCast包,包的內容包括以下資料就可以了。FF FF FF FF FF FF,6個FF是資料的開始,緊跟著16次MAC地址就可以了。比如MAC地址是11 22 33 44 55 66,那麼資料就是FF FF FF FF FF FF 11 22 3
Time of Update: 2018-12-07
最近受朋友委託,幫他寫一個讀取串口的程式。以前只知道需要調用Windows API來實現,查詢了MSDN之後發現,從.Net framework 2.0開始,.Net內部已經封裝了SerialPort類,使得讀取串口內容變得非常容易。SerialPort位於System.IO.Ports namspace下面。常用的建構函式為 1: public SerialPort( 2: string portName, 3: int baudRate, 4:
Time of Update: 2018-12-07
相信很多朋友們希望能夠快速的從一個C#開發人員成長為Windows Phone 7進階開發人員,而非僅僅知道皮毛而已,本系列文章的目的為根據我個人多次進行培訓指導總結的一張通往Windows Phone 7開發領域的地圖。 導航為從OO開發人員(Java)到WP7領域的成長能力圖。從開發人員的角度,可以分為以下階段:L0 : Object-Oriented Developer (OOA/D/P)L1 : .Net Developer (BCL)L2 : Silverlight
Time of Update: 2018-12-07
即將兩年的.NET經驗,一年的BMC經驗,作為一個電子專業的人來說,心中仍然保留著對C和C++的情結。最近項目空閑之餘在看Windows Programming和Windows via C/C++,並且用C++為我們開發的類庫製作安裝程式,雖然只是簡單的Windows C程式,但是那份成就感油然而生。本文記錄開發這個小程式過程中的心得:1、基於對話方塊的windows程式雖然說標準的Windows程式總是由使用者註冊的視窗類別開始的,並且程式員需要自己用while來接收應用程式訊息佇列裡的訊息,
Time of Update: 2018-12-07
C多檔案編譯、範圍和儲存周期 所謂的編譯,分為兩個步驟:編譯和連結編譯有兩個過程:a)先行編譯:處理#...的語句。#define的宏替換、#if條件編譯、#include只是簡單的把對應的檔案內容複寫到#include語句的位置b)單元原始碼編譯:隨後編譯器對每個cpp檔案(在先行編譯階段已經將#include的檔案複製完成)單獨編譯成模組(.obj/.o等),在這個過程中除了語法檢查外,還要在本cpp檔案中檢查調用函數或引用變數是否聲明過。最後產生的模組開頭會有一個符號表,其中包括了本模組
Time of Update: 2018-12-07
摘要這個系列是本人在工作或工作之餘開發和學習C\C++的一些筆記。本文涉及C++/CLI的一些內容。本文為原創,首發於我的個人部落格:.NET程式員的C\C++情結(3)。歡迎交流指正。轉載請註明出處。雖然現在主要從事.NET平台的開發,但是一直以來對C\C++有著那份難以割捨的情結。本文會涉及到託管C++的一些隨筆記錄。當然,如果寫純.NET應用的話,C#無疑是最合適的語言的。但是託管C++在同時處理Native調用和託管調用上無疑是十分迷人的,往往用來作為託管世界和Native世界的橋樑。當
Time of Update: 2018-12-07
using System.Management;#region 取得裝置網卡的MAC地址/// <summary>/// 取得裝置網卡的MAC地址/// </summary>private string GetNetCardMacAddress(){ string str = ""; ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
Time of Update: 2018-12-07
最近在寫一個QQ,自己的思想大致如下:1.與伺服器互動的部分採用TCP協議2.與對方互動(比如聊天)採用UDP協議3.在網路上傳輸序列化後的對象(位元組流)4.接收時,將其還原序列化基於這個初步的設計,問題就出來了。比如:還原序列化時得到的是object對象,我怎麼知道它具體是何種對象(因為程式中會涉及好多種對象,比如登陸的,註冊的,加好友的,下線的等等)!我在網上找了一上午,大體的解決方案是這樣的:1.定義一個這些對象的基類,其中有個CommandType欄位(這裡我覺得枚舉好些)。序列化時用
Time of Update: 2018-12-07
最近一陣子大家都在討論C#,從效能到細枝末節;從無名小卒到所謂大牛;言辭也有從委婉到針鋒相對,可謂熱鬧異場。所以,圍觀了這麼久,我也來湊湊熱鬧。 首先,立個最主要的觀點,批判某些人。不管你有多牛,說別人水平菜和無知總是不對的。做人總是要低調的。大家在這上面說話,一要表達自己觀點;二恐怕是要與人交流:請更牛的指點瑕疵;請同水平的人討論批評;給低水平的人一些學習意見和指導,這也是最重要的。如果一看別人說錯了,就用尖銳的措辭將人批判的一塌糊塗,以此擷取的優越感,還真不知道有多大意義。揚長避短只在競爭時