Time of Update: 2018-12-03
理解C#中的代理和事件(二)嗨!大家好,還記得剛才的那篇關於代理的嗎?你是不是要問我為什麼要分開來寫?原因很簡單他們說要7篇以上才可以成為專題作家.噢,天啊,事實上這是我的第九篇可是那兩篇.還在審核中.開玩笑的,事實上是,結構,代理和事件有聯絡,可是也是可以分開來討論的兩個話題.這就是我為什麼要分開,因為,很多朋友一開始用到代理和事件的時候,都是在給一個button或一個表單添加事件的時候用到的.所以經常可以看到,有人一提到代理和事件就會自然想到windows的時間驅動.是的那是最常用的,可是事
Time of Update: 2018-12-03
解C#中的代理和事件(一) 突然寫這篇文章,真的有點,是在做作的感覺,我想這並不是什麼,難以理解的東西,事實上,很多人都寫過,而且,我保證至少不比我寫的差.可是還是覺得有必要提出來.因為要去正確的理解代理和事件是很有趣的,也是很必要的.那麼好吧,下面我就來講講,它們之間的關係.當然還會有些例子.
Time of Update: 2018-12-03
由執行個體計數器引出(C#)好久沒發表文章了,說也有趣,突然感覺C#中的有些類,為什麼,其構造器是不可見的?而且通常這些類在一個程式中往往只有一個執行個體存在。於是,我做了個實驗結果如下:由該例子引出:using System; namespace ConsoleApplication1{ /// <summary> /// Class1 的摘要說明。 /// </summary> class Class1 { /// <summary> ///
Time of Update: 2018-12-03
其實想寫這篇文章,是因為突然在整理論壇上的文章的時候,突然發現一個人問我如何才能在C#中實現多重繼承,當時我答的很隱晦,因此這裡我想補充說明一下.首先,我要說明一下,C#中是沒有類的多重繼承這個概念.要使用多重繼承必須要通過介面Interface來完成.可是大家都知道Interface實際上就是一個虛函數列表指標.內部封裝的只有函數和屬性.而且介面(Interface)不能實力化只能通過派生(因為沒有建構函式)才可以使用.這一點和抽象類別很類似,可是抽象類別是個類,他有方法的實現.它所描述的對象
Time of Update: 2018-12-03
可能是我的習慣不好。也可能是我覺得程式員最好的溝通方式就是代碼,又或是我太自信自己的代碼是很容易看懂的,更或者我認為我寫的程式本身就是藝術品。所以,我只想,貼代碼: 類定義如下using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Runtime.InteropServices;namespace DllTest{
Time of Update: 2018-12-03
//LLUU.cpp//矩陣的LU分解#include <iostream>#include <fstream>#include <cmath>using namespace std;class lluu { private: int n; double **a,**l,**u; public: lluu(int nn) { int i; n = nn; a = new double*[n]; for(i=0;i<n;i++)
Time of Update: 2018-12-03
採用全選主元高斯消去法求解一般矩陣的逆矩陣,用C++代碼實現。//RINV.cpp//一般矩陣求逆#include <iostream>#include <cmath>#include <fstream>using namespace std;class rinv //矩陣類{ private: int n; double **a; public: rinv(int nn)
Time of Update: 2018-12-03
private void textBox1_KeyPress(object sender, KeyPressEventArgs e){ e.Handled = !(Char.IsNumber(e.KeyChar) || e.KeyChar == (char)8 || e.KeyChar == '.'); if (!e.Handled) (sender as TextBox).Tag = (sender as TextBox).Text;//記錄最後一次正確輸入}private
Time of Update: 2018-12-03
上一篇已經介紹了協議的組成,一個協議,一般具有 :協議頭+長度+資料+校正 , 文字格式設定可以直觀的定義斷行符號換行是協議的結尾,所以我們可以省略資料長度,增加協議尾。即: 協議頭 + 資料 + 校正 + 資料尾 。文本方式的資料比較容易分析。如果資料緩衝,可以考慮用StringBuilder。或是不緩衝也可以。文字格式設定資料大多有換行結尾。稍微修改即可。例如分析常見的NMEA 0183格式的衛星座標資料GGA。$GPGGA,121252.000,3937.3032,N,11611.6046
Time of Update: 2018-12-03
我們的串口程式,除了通用的,進行串口監聽收發的簡單工具,大多都和下位機有關,這就需要關心我們的通訊協議如何緩衝,分析,以及通知介面。 我們先說一下通訊協議。通訊協議就是通訊雙方共同遵循的一套規則,定義協議的原則是儘可能的簡單以提高傳輸率,儘可能的具有安全性保證資料轉送完整正確。基於這2點規則,我們一個通訊協議應該是這樣的:頭+資料長度+資料本文+校正 例如:AA 44 05 01 02 03 04 05 EA 這裡我假設的一條資料,協議如下: 資料頭:
Time of Update: 2018-12-03
第一篇文章我相信很多人不看都能做的出來,但是,用過微軟SerialPort類的人,都遇到過這個尷尬,關閉串口的時候會讓軟體死結。天哪,我可不是武斷,算了。不要太絕對了。99.9%的人吧,都遇到過這個問題。我想只有一半的人真的解決了。另外一半的人就睜隻眼閉隻眼阿彌佗佛希望不要在客戶那裡出現這問題了。 你看到我的文章,就放心吧,這問題有救了。我們先回顧一下上一篇中的代碼 void comm_DataReceived(object sender,
Time of Update: 2018-12-03
1.一般情況下,衍生類別可以自由訪問基類的成員,就好像它們是自己的成員一樣,並且不會有任何效能損失。但是當衍生類別定義了和基類同名成員時除外,這時需要加上基類的域指示符才可以。注意,這個同名對於函數來說只包括函數名,並不包含參數表。例如如下定義:class A{public: void f(){cout<<"f from A"<<endl;}};class B: public A{public: void f(int){cout<<"f from
Time of Update: 2018-12-03
一、什麼是拷貝建構函式?1.對於一個類X,如果一個建構函式的第一個參數是下列之一:a)X&b)const X&c)volatile X&d)const volatile X&且沒有其他參數或其他參數都有預設值,那麼這個函數是拷貝建構函式。按此定義,以下均為類X的拷貝建構函式:X::X(const X&); X::X(X&, int=1);
Time of Update: 2018-12-03
extern "C" 閱讀筆記發信站: 水木社區 (Fri Mar 7 00:22:47 2008), 站內本以為很簡單,仔細閱讀了一下 C++ 標準,發現內容還不少。總結了一下。要點:函數類型,函數名,變數名具有語言連結性,language linkage。語言連結性可能會影響到名字以及呼叫慣例等,由實現決定。C++ 預設的語言串連性是 C++
Time of Update: 2018-12-03
【 聲明:著作權,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】
Time of Update: 2018-12-03
根據《C++ Primer》第三版16.4節的敘述,C++類模板友元分為以下幾種情況1.非模板友元類或友元函數。書上給了一個例子:class Foo{ void bar();};template <class T>class QueueItem{ friend class foobar; friend void foo(); friend void Foo::bar();
Time of Update: 2018-12-03
【 聲明:著作權,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】 嵌入式彙編是對純彙編檔案的一種有益補充。通常會有下面幾種情況使用到彙編:(1)提高代碼的工作效率 ,使用到cpu的一些特殊指令,比如說mmx指令;(2)對硬體進行某種特殊的操作,比如說關中斷等,這在核心級的代碼中是比較常見的。但是我們講究嵌入式彙編的一些基本點和大家一起討論一下,建議大家和我一起做實驗,用事實證明一切。 (1)使用嵌入彙編的時候,注意寄存器的保護int
Time of Update: 2018-12-03
【 聲明:著作權,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】 無論是在判斷還是在迴圈的過程中,通常在遇到合適的條件的時候就會退出相應的模組。跳出模組啟動並執行方式很多,break,continue,return都可以。下面我們就可以分別對他們進行將介紹。 (1)continue只能用於迴圈,而break迴圈、判斷都可以應用。兩者有什麼區別呢?21: for(int m = 10; m < 100; m ++)0040163
Time of Update: 2018-12-03
【 聲明:著作權,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】
Time of Update: 2018-12-03
【 聲明:著作權,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】 在我們平常的編程當中,用於判斷的地方很多,但主要有下面三種方式:if-else;switch;?:。其中最後一種方式在本質上和if-else是一樣的。switch和if-else其實也一樣,如果我們把switch改成if(...) {} else if(...) {} else