Time of Update: 2018-12-07
C#類在什麼時候分配記憶體 一直以為記憶體配置是在調用建構函式的時候。現在發現我錯了。 昨天在看C++的賦值運算時,想做一下筆記。一個類賦值給另一個類時,先調用建構函式,在給成員變數一個個賦值,靜態成員變數不用賦值,因為靜態成員變數屬於類,被類的所有執行個體共用,所以不用被賦值,方法屬於類,不用被賦值,也賦不了值。 突然想到調用靜態屬性或方法時不需要調用建構函式,因為調用建構函式只是產生一個新的執行個體,靜態屬性或方法屬於類嗎,調用它們根本不用產生執行個體,我突然想尖叫,
Time of Update: 2018-12-07
notsamenum++;}}if(notsamenum<4){char cj=(char)datachar[ii];return cj.ToString();}}return jieguo;}/// <summary>/// 檢查特徵庫中是否已經存在相關記錄/// </summary>bool ischardatain(){bool jieguo=false;for(int
Time of Update: 2018-12-07
摘要:本文討論了如何使用C#2.0實現抓取網路資源的網路蜘蛛。使用這個程式,可以通過一個入口網址(如 http://www.comprg.com.cn)來掃描整個互連網的網址,並將這些掃描到的網址所指向的網路資源下載到本地。然後可以利用其他的分析 工具對這些網路資源做進一步地分析,如提取關鍵詞、分類索引等。也可以將這些網路資源作為資料來源來實現象Google一樣的搜尋引擎。關鍵 詞:C#2.0,Html,網路蜘蛛, 鍵樹,Regex 一、引言
Time of Update: 2018-12-07
在.Net應用程式中,我們經常看到VS為我們產生的項目工程中都會含有App.config或者Web.config這樣的檔案。這個檔案就是我們所說的應用程式設定檔。在這個檔案裡面記述著一些與我們的應用程式相關的資訊,如:資料庫連接,認證模式等。我們在程式中可以利用ConfigurationManager的ConnectionStrings屬性方便的擷取設定檔中的資料庫連接字串資訊。 可是有時候,我們需要對它進行一些擴充,加入一些自訂的元素,而不是僅僅使用預設的配置。例如,我們可能需要在程式啟動
Time of Update: 2018-12-07
C++實現二叉樹的基本操作包括 添加節點、刪除節點、前序走訪、中序遍曆、後續遍曆、層序遍曆、最大值、最小值、二叉樹的高度//Tree.h 標頭檔#include <stdio.h> class Tree{ private : //節點元素類型為結構體 struct LinkNode { int data; LinkNode *left; LinkNode *right; LinkNode(const int& dat,LinkNode
Time of Update: 2018-12-07
一直以為自己對多態和繼承已經比較瞭解,當遇到虛繼承的時候,發現有點犯暈,想不通了,於是在微博上向幾個大神請教,很快得到了他們的回複,高興之情無以言表。之後自己查了一些資料,結合大神的回複,在這裡做一下簡單的記錄。我的問題如下:為什麼虛繼承類的sizeof要大些啊,是因為虛繼承中,子類有指向父類的指標和指向父類的虛函數表的指標嗎,比非虛繼承多了這兩個指標? @左耳朵耗子 @簡悅雲風 @GeniusVczh @GeniusVczh:調用的時候給的this和函數實際需要的this的指標不一定是一樣的,
Time of Update: 2018-12-07
上天上.Net課我穿著一件T-Shirt正面印有涅槃三個人,中間是Kurt Cobain披頭散髮,面帶微笑。老師看到我說,“喲,你衣服上印的不是寫《C#入門經典》的那幾個人嗎?”(注意:這裡的C#是一門程式設計語言,不是C調升半調....)我大窘~然後說:“這幾個是彈吉它的,估計還C#沒有入門,好像也沒有機會學了,不過他們倒是會按C#和弦。。。” 我衣服上的Nirvana~~ C#入門經典 C#進階編程顯然我們Kurt Cobain要帥很多好吧!!!其實,乍看還是有點像的。。。。
Time of Update: 2018-12-07
通常swap(a,b),都是用中間變數public static void Swap1(ref int a, ref int b) { int temp = a; a = b; b = temp; }產生的IL如下(去除ref) .maxstack 1 .locals init ( [0] int32 temp) L_0000: ldarg.0 L_0001:
Time of Update: 2018-12-07
今早看到了《你真的瞭解a ^= (b ^= (a ^= b))嗎?》一文,文章中提到了一個有趣的運算式:a ^= (b ^= (a ^= b)); 很簡單的一個程式: 1 int a = 2; 2 int b = 9; 3 a ^= (b ^= (a ^= b)); 4 Console.WriteLine("{0}, {1}", a.ToString(), b.ToString());最後的運算結果不是預期的9,2,而是0,2。同時,還有1個運算式:
Time of Update: 2018-12-07
經典就是經典,不論多少年,經典永遠不會改變。語言,架構總有一天會過時,但是唯獨經典永遠存在。這就是研究這些經典演算法的永恒。當我這樣一個.net程式員去應聘Java, C++,
Time of Update: 2018-12-07
1. 動態記憶體分配先來介紹三個動態記憶體分配的函數:malloc,calloc和realloc。說來慚愧,以前只知道malloc。現在來看下他們的區別:malloc:最常用的分配記憶體塊,但是不對記憶體進行初始化。calloc:分配記憶體塊,但是對記憶體塊進行清零操作,這就造成此函數的效率要比malloc要低。realloc:調整(增加或者減少)之前分配記憶體塊的大小。由於上面的函數只是開闢了一段記憶體,因此無法知道你要利用這段記憶體來儲存什麼類型的資料,因此只是返回一個void *類型的值,
Time of Update: 2018-12-07
在C語言中,經常會出現一些複雜的型別宣告。而大多數都是涉及到指標的類型。那麼就在這一節來集中認識一下。首先,我們先來瞭解*,()和[]的組合。在看實際例子前,先來看一個重要的規則:在做選擇時,始終使[]和()的優先順序大於*。舉個簡單的例子:int *arr[10]。由於[]的優先順序大於*。也就代表,首先這是一個含有10個元素數組,那麼數組內的內容是什麼呢?是int *arr。去掉類型名稱,數組內的類型是int *。所以這是一個含有10個整數類型指標的數組。同樣的規則繼續看:float
Time of Update: 2018-12-07
1. typedef在前文中,我們用宏定義來定義了一個BOOL類型,那麼現在就用更專業的方式來定義類型。typedef int Bool;int main (void){ Bool flag=1;if(flag) { printf("True"); }else{ printf("false"); }}typedef 的作用就是類型定義(Type Definition)。類型定義有以下三個優點:1. 易於閱讀。比如我們可以把定義一個Dollar,
Time of Update: 2018-12-07
1. 字串入門字串也稱字串字面量,是用一對雙引號括起來的字元序列。我們也許經常會遇到字串特別長的情況,在C#中,我們一般會用@符號來表示。 Console.WriteLine(@"HelloWorld"); 但是在C中,我們會這樣來寫:int main(){ printf("Hello " "world");return 0;}還記得我曾經講的最多的一句話就是,把字串當做字元數組來玩。其實在本質上,C語言就是把字串作為字元數組來處理,當C語言編譯器遇到長度為N的字串時,
Time of Update: 2018-12-07
1. 摘要在這篇文章中,我會通過IL去分析一個簡單的語句。如果覺得實在簡單,可以略過。2. 引子事情是這樣的,同事寫了一段類似這樣的代碼:class Program{ static void Main(string[] args) { object o = new object(); int i; Int32.TryParse(Console.ReadLine(), out
Time of Update: 2018-12-07
網頁自動登入(提交Post內容)的用途很多,如驗證身份、程式升級、網路投票等,以下是用C#實現的方法。 網頁自動登入和提交POST資訊的核心就是分析網頁的原始碼(HTML),在C#中,可以用來提取網頁HTML的組件比較多,常用的用WebBrowser、WebClient、HttpWebRequest這三個。以下就分別用這三種方法來實現: 1、WebBrowser是個"迷你"瀏覽器,其特點是Post時不用關心Cookie、內建JS等問題
Time of Update: 2018-12-07
m_objExcel = new Excel.Application();m_objExcel.Visible = true;Excel.Workbook m_objBook = m_objExcel.Application.Workbooks.Add(FileWrite);m_objBook = m_objExcel.Workbooks.Add(Missing.Value);Excel.Worksheet m_objSheet =
Time of Update: 2018-12-07
public class XmlControl { protected string strXmlFile; protected XmlDocument objXmlDoc = new XmlDocument(); public XmlControl(string XmlFile) { // // TODO: 在這裡加入建構函式的程式碼 // try { objXmlDoc.Load(XmlFile); } catch (System.Exceptio
Time of Update: 2018-12-07
在多線程中,為了使資料保持一致性必須要對資料或是訪問資料的函數加鎖,在資料庫中這是很常見的,但是在程式中由於大部分都是單線程的程式,所以沒有加鎖的必要,但是在多線程中,為了保持資料的同步,一定要加鎖,好在Framework中已經為我們提供了三個加鎖的機制,分別是Monitor類、Lock關鍵字和Mutex類。 其中Lock關鍵詞用法比較簡單,Monitor類和Lock的用法差不多。這兩個都是鎖定資料或是鎖定被調用的函數。而Mutex則多用於鎖定多線程間的同步調用。簡單的說,
Time of Update: 2018-12-07
通過應用程式讀取網頁資訊的時候,通常需要抓取網頁的資料,但是有一個問題就是很多網頁需要登入後才能夠獲得頁面資料,那麼就需要儲存當前的cookie,在.NET中可以使用CookieContainer 對象來儲存登入後的Cookie資訊,每次發送資料的時候加上Cookie資訊,就可以解決這個問題了。 #region 同步通過POST方式發送資料 /// <summary> /// 通過POST方式發送資料 ///