Time of Update: 2018-12-05
導讀本篇文章對http://www.daoluan.net/?p=774中的“計算機”進行改進,與大家分享。上面那篇中的服務端屬重複型,即一個時刻只處理一客戶的請求,處理期間不搭理其他客戶。此篇對上篇的“計算機”進行小小的改進——能夠接受多個客戶的請求。改進細則:獨立bind,listen,accept,serve(即calc過程)功能模組;所有錯誤成功提示提取至各功能模組(函數)之外,錯誤/成功根據各函數的傳回值判斷(這更符合UNIX編程風範);客戶的服務過程由產生的子進程負責。缺陷:由子進程
Time of Update: 2018-12-05
C#互操作系列文章:C# 互通性入門系列(一):C#中互通性介紹C# 互通性入門系列(二):使用平台叫用調用Win32 函數C# 互通性入門系列(三):平台叫用中的資料封送處理C# 互通性入門系列(四):在C#中調用COM組件 本專題概要:引言平台叫用C++ Interop(互操作)COM Interop(互操作) 一、引言 這個系列是在C#基礎知識中遺留下來的一個系列的,因為在C#
Time of Update: 2018-12-05
2012-09-14 14:20:下面內容主題是《多個對象跟蹤維護同一個記憶體位址》。2012-09-11 18:04:看到園裡朋友們這麼熱心,有那麼一會心裡好興奮。:)2012-09-11 下午:本文曾出現很嚴重的錯誤,但不要緊,感謝園友們的即使指正。不喜歡程式語言的C++類中,有時候使用到傳值調用(對象實體做參數),遇到這種情況,可要小心了!特別是當你所傳值的對象生命週期較長,而非臨時對象(生命週期段)的時候。來看看下面的情況:#include <iostream>using
Time of Update: 2018-12-05
C#互操作系列文章:C#互通性入門系列(一):C#中互通性介紹C#互通性入門系列(二):使用平台叫用調用Win32 函數C# 互通性入門系列(三):平台叫用中的資料封送處理C#互通性入門系列(四):在C# 中調用COM組件 本專題概要:引言如何在C#中調用COM組件——訪問Office 互操作對象在C# 中調用COM組件的實現原理剖析錯誤處理小結 一、引言 COM(Component Object
Time of Update: 2018-12-05
引言: 上一專題介紹了下編譯器是如何來翻譯委託的,從中繼語言的角度去看委託,希望可以協助大家進一步的理解委託,然而之前的介紹都是委託只是封裝一個方法,那委託能不能封裝多個方法呢?因為生活中經常會聽到,我代表大家的意見等這樣的說話,既然委託也是一個代表,那他如果只能代表一個人,那他的魅力就不是很大了吧,所以我們就會委託能不能代表多個方法的?
Time of Update: 2018-12-05
引言: 在C# 2.0中泛型並不支援可變性的(可變性指的就是協變性和逆變性),我們知道在物件導向的繼承中就具有可變性,當方法聲明傳回型別為Stream,我們可以在實現中返回一個FileStream的類型,此時就存在一個隱式的轉化——從FileStream類型(子類引用)——>Stream類型(父類引用),並且參考型別的數組也存在這種從子類引用——>父類引用的轉化,例如string[] 可以轉化為object[](即這樣的代碼是可以通過編譯的:string[] strs =new
Time of Update: 2018-12-05
使用WebBrowser控制項,在documentComplete事件處理器裡寫1 HtmlElement name = webBrowser1.Document.GetElementById("ctl00$content$loginname");2 if (name != null)3 name.SetAttribute("value", User);4 HtmlElement pass =
Time of Update: 2018-12-05
引言:前面幾個專題對委託進行了詳細的介紹的,然後我們在編寫代碼過程中經常會聽到“事件”這個概念的,尤其是寫UI的時候,當我們點擊一個按鈕後VS就會自動幫我們產生一些背景代碼,然後我們就只需要在Click方法裡面寫代碼就可以,所以可能有些剛接觸C#的朋友就覺得這樣很理所當然的,也沒有去思考這是為什麼的,為什麼點擊下事件就會觸發我們在Click方法裡面寫的代碼呢?事件到底扮演個什麼樣的角色呢?為瞭解除大家的這些疑惑,下面就詳細介紹了事件,讓一些初學者深入理解C#中的事件的概念。一、為什麼C#中會有事
Time of Update: 2018-12-05
C#基礎知識系列終於告了一個段落了, 本系列中主要和大家介紹了C#1.0到C# 4.0中一些重要的特性,剛開始寫這個專題的初衷主要是我覺得掌握了C#這些基礎知識之後,對於其他任何的一門語言都是差不多的,這樣可以提高朋友們對其他語言的掌握,以及可以讓大家更加迅速地掌握.NET的新特性,
Time of Update: 2018-12-05
引言:上一個專題已經和大家分享了我理解的——C#中為什麼需要委託,專題中簡單介紹了下委託是什麼以及委託簡單的應用的,在這個專題中將對委託做進一步的介紹的,本專題主要對委本質和委託鏈進行討論。一、委託的本質 平時我們很容易使用委託——用C# delegate關鍵字定義委託,再用new操作符構造委託執行個體,然後通過調用委託執行個體來調用回調方法(就是用一個了委派物件的變數來代替方法名,這句話如果剛接觸的人不好理解的話,這裡給個例子:MyDelegate mydelegate =new
Time of Update: 2018-12-05
引言: C# 2.0 中還引入了可空類型,可空類型也是實值型別,只是可空類型是包括null的實值型別的,下面就介紹下C#2.0中對可空類型的支援具體有哪些內容(最近一直都在思考如何來分享這篇文章的,因為剛開始覺得可空類型使用過程中比較簡單,覺得沒有講的必要,但是考慮到這個系列的完整性,決定還是嘮叨下吧,希望對一些不熟悉的人有協助)。 一、為什麼會有可空類型 如果朋友們看了我之前的分享,對於這一部分都不會陌生,因為我一般介紹C#特性經常會以這樣的方式開頭的,
Time of Update: 2018-12-05
本篇從 C++ 初學者遇到的一個有趣的問題開始。考慮下面的 C++ 程式:class A{ void func(){}};class B:public A{ void func(){}};int main(void){ cout << sizeof(A) << " " << sizeof(B) << endl; return 0;}輸出結果是:1 1再考慮下面很相似的程式:class A{ virtual
Time of Update: 2018-12-05
引言: 當我們在點擊視窗中的Button控制項VS會幫我們自動產生一些代碼,我們只需要在Click方法中寫一些自己的代碼就可以實現觸發Click事件後我們Click方法中代碼就會執行,然而我一直有一個疑問的——既然上一專題中說事件是一個多播委託,然而自動產生的程式碼中只有事件的執行個體化,卻沒有看到事件的調用,那既然沒有事件調用的代碼,那封裝的Click為什麼會執行呢?一、點擊按鈕時觸發Click事件背後發送的事情在引言中提出了我的提問的,
Time of Update: 2018-12-05
C 還是 C++?C++ 中的多態是指「通過基類對象的指標或者基類對象的引用調用虛函數」,表現更多衍生類別的特性,但根據 C++ 多態的實現,我們發現這種方法存在一定的空間和效率的折損。不可否認,多態輕鬆解決了很多工程中遇到的問題,這與 pure C 的解決方案比起來,更為優雅。在考慮移植性上,C 的光芒要蓋過 C++,但 C++ 的多態是可借鑒的,於是用 pure C 來模仿 C++ 中多態行為。C 如何?多態在 C 中沒有類的概念,但有 struct,而且 C 中的 struct
Time of Update: 2018-12-05
引言: 前面專題主要介紹了C#1中的2個核心特性——委託和事件,然而在C#
Time of Update: 2018-12-05
引言: 感覺好久沒有更新部落格了的,真是對不住大家了。在這個專題中將介紹匿名方法,匿名方法看名字也能明白,當然就是沒有名字的方法了(現實生活中也有很多這樣的匿名過程,如匿名投票,匿名舉報等等,相信微軟在命名方面肯定是根據了生活中例子的),然而匿名方法的理解卻不是僅僅是這一句話(這句話指的是沒有名字的方法),它還有很多內容,下面就具體介紹下匿名方法有哪些內容 一、匿名方法 之前一直認為匿名方法是在C# 3.0中提出的,之前之所以這麼認為主要是因為知道C#
Time of Update: 2018-12-05
一、引言 對於一些初學者(包括工作幾年的人在內)來說,有時候對於方法之間的參數傳遞的問題感覺比較困惑的,因為之前在面試的過程也經常遇到參數傳遞的基礎面試題,這樣的面試題主要考察的開發人員基礎是否紮實,對於C#中實值型別和參考型別有沒有深入的一個理解——這個說的理解並不是簡單的對它們簡單一個定義描述,而在於它們在記憶體中分布。所以本文章將帶領大家深入剖析下C#中參數傳遞的問題,並分享我自己的一個理解,只有你深入理解了才能在不運行程式的情況就可以分析出參數傳遞的結果的。二、按值傳遞對於C#中的參數
Time of Update: 2018-12-05
引言: 本專題主要是承接上一個專題要繼續介紹泛型的其他內容,這裡就不多說了,就直接進入本專題的內容的。 一、類型推斷 在我們寫泛型代碼的時候經常有大量的"<"和">"符號,這樣有時候代碼一多,也難免會讓開發人員在閱讀代碼過程中會覺得有點暈的,此時我們覺得暈的時候肯定就會這樣想:是不是能夠省掉一些"<" 和">"符號的呢?你有這種需求了,
Time of Update: 2018-12-05
引言: 對於剛剛接觸Lambda運算式的朋友們,可能會對Lambda運算式感到非常疑惑,它到底是個什麼什麼樣的技術呢?以及它有什麼好處和先進的地方呢?下面的介紹將會解除你這些疑惑。 一、Lambda運算式的演變過程Lambda運算式其實大家可以理解為它是一個匿名函數(對於匿名函數的介紹大家可以參考我這篇文章),
Time of Update: 2018-12-05
使用託管C++調用C#的exe程式。(事後證明是對Reflector是無效的。)哎。添加CLR控制台應用程式。把C#的exe程式放到“資源檔”檔案夾下,右鍵屬性的項類型設定為已編譯的託管資源。在主程式碼的main函數改寫為如下內容: 1 // x.cpp: 主專案檔案。 2 3 #include "stdafx.h" 4 5 using namespace System; 6 7 [STAThreadAttribute] 8 int