Time of Update: 2018-12-07
局部類型局部類型的引入沒有局部類型的時候(C# 1.0)class App{ public void Foo(){...} ... public void Bar(){...} ...}有了局部類型之後(C# 2.0)partial class App{ public void Foo() {...} ...}partial class App{ public void Bar() {...}
Time of Update: 2018-12-07
在應用程式開發過程中,開發人員都力求寫出更加高效的代碼。但是當你想手工為C#編譯器最佳化代碼時,你的種種最佳化可能反倒會阻礙JIT進行更加高效的最佳化。因此,我們最好儘可能的寫出最清晰的代碼,將最佳化工作交給JIT編譯器去完成。 在.NET平台下開發程式的開發人員都應該知道:.NET運行時將調用JIT編譯器來將C#編譯器產生的IL翻譯成機器碼。JIT不會在程式剛開始的時候就完全翻譯所有的IL代碼,CLR根據函數的粒度來逐一進行JIT編譯。沒有被調用的函數根本不會被JIT編譯,因此將那些非常
Time of Update: 2018-12-07
這幾天倒騰socket編程,在部落格園找到了張子陽大哥的socket編程的系列文章 看了很不錯 。網上也有許多類似的文章,我這裡也純屬炒剩飯 。獻醜了哈首先還是用tcpListener 跟tcpClient吧 先把基礎的搞懂了再說socket編程的概念用我們以前老師的話說就是一個類似打電話 或者管子 的概念。為什麼是打電話捏,如果要建立串連( 打電話) 另外一端不會知道你什麼時候會打給他 可能馬上也可能過很久,就是說始終有一方要一直守在那裡 等待接入
Time of Update: 2018-12-07
1.在C++ 程式中調用被 C編譯器編譯後的函數,為什麼要加 extern “C”? 答:C++語言支援函數重載,C語言不支援函數重載。函數被C++編譯後在庫中的名字與C語言的不同。假設某個函數的原型為: void foo(int x, int y);該函數被C編譯器編譯後在庫中的名字為_foo,而C++編譯器則會產生像_foo_int_int之類的名字。由於編譯後的名字不同,C++程式不能直接調用C
Time of Update: 2018-12-07
自己總是用VC平台來開發東西,但是有時候總是出這樣那樣的問題,呵呵,總是需要上網查資料來解決,在這裡把自己用到上網查的一些技巧摘錄如下,希望對大家有用,省去大家再去搜尋的煩惱。1.如何在Release狀態下進行調試Project->Setting=>ProjectSetting對話方塊,選擇Release狀態。C/C++標籤中的Category選General,Optimizations選Disable(Debug),Debut info選Program
Time of Update: 2018-12-07
C語言是沒有字串類型的,一般通過字元指標或者字元數組進行操作。指標和數組的差別這裡就不講了。 首先說明下程式中變數在記憶體中的分布。 全域變數儲存在資料區段中,局部變數儲存在堆棧中,利用malloc動態分配的變數儲存在堆中。堆棧和堆的區別請google. 下面根據一個具體的程式來看。 代碼Code highlighting produced by Actipro CodeHighlighter
Time of Update: 2018-12-07
我們在做程式開發時,難免會遇到錯誤異常。如何快速地找到出錯的地方、分析錯誤的原因以及找到問題的解決方案,是許多初級程式員困擾的問題,這也正是經驗的寶貴之處。下面我將簡單介紹在Visual Studio中調試以及一些進階的調試和常見的錯誤。PS:如無特別說明Visual Studio均指Dev10即Visual Studio 2010。入門篇假設你是有著.Net平台的程式員,並且使用Visual Studio
Time of Update: 2018-12-07
using System;using System.Collections.Generic;using System.Text;using Microsoft.Office.Interop.Word;namespace WordControl{ public class ToWord { private Application _app; public Application app { get { return
Time of Update: 2018-12-07
【IT168 技術文檔】本文旨在與各位朋友們分享我是如何在項目中用C# “ps圖片” 為網站產生同比例微縮圖的解決方案。如有不足之處歡迎您指出。 一、技術概述: 1.Ajax無重新整理上傳圖片,詳情請閱我的這篇文章。(jquery + c# ashx) 2.C#位元影像處理 System.Drawing。 3.最新demo支援IE7,IE8,FireFox。 二、微縮圖處理方法: 產生微縮圖的核心方法: CreateThumbnailPicture 代碼Code
Time of Update: 2018-12-07
反射(C# 編程指南)反射提供了封裝程式集、模組和類型的對象(Type 類型)。可以使用反射動態建立類型的執行個體,將類型綁定到現有對象,或從現有對象擷取類型並調用其方法或訪問其欄位和屬性。如果代碼中使用了屬性,可以利用反射對它們進行訪問。有關更多資訊,請參見屬性。下面是使用靜態方法 GetType-- 從 Object 基類派生的所有類型都繼承該方法 -- 擷取變數類型的簡單反射樣本:C# 複製代碼// Using GetType to obtain type information:int
Time of Update: 2018-12-07
預存程序 create proc test@lc_code varchar(50)asselect lc_name from lc_location where lc_code=@lc_codeDataSetSqlConnection conn = new SqlConnection("Server=dserver;database=lawmanfepos;uid=sa;pwd="); SqlDataAdapter sar = new
Time of Update: 2018-12-07
提供給 lock 的對象只是用來唯一地標識由多個線程共用的資源 通常,最好避免鎖定 public 類型或鎖定不受應用程式控制的對象執行個體。例如,如果該執行個體可以被公開訪問,則 lock(this) 可能會有問題,因為不受控制的代碼也可能會鎖定該對象。這可能導致死結,即兩個或更多個線程等待釋放同一對象。出於同樣的原因,鎖定公用資料類型(相比於對象)也可能導致問題。鎖定字串尤其危險,因為字串被公用語言運行庫
Time of Update: 2018-12-07
非常實用的東西!過去知道這個方法的話可以解決多少問題啊首先建立一個C#的DLL工程,寫一個類//Test.csnamespace Test...{public class MyTest...{public string Fun()...{return this.ToString();}}},編譯然後在cmd裡執行VS的vsvars32.bat設定環境變數,然後執行regasm cscomtest.dll /tlb:cscomtest.tlb /codebaseMicrosoft (R)
Time of Update: 2018-12-07
實值型別(C# 參考)實值型別主要由兩類組成: 結構 枚舉 結構分為以下幾類:Numeric(數值)類型 整型 浮點型 decimal bool 使用者定義的結構。實值型別的主要功能基於實值型別的變數直接包含值。將一個實值型別變數賦給另一個實值型別變數時,將複製包含的值。這與參考型別變數的賦值不同,參考型別變數的賦值只複製對對象的引用,而不複製對象本身。所有的實值型別均隱式派生自
Time of Update: 2018-12-07
文章目錄 運行時常量(readonly)和編譯時間常量(const)的不同 C#語言中有兩種類型的常量:編譯期常量和運行時常量。應該盡量使用運行時常量,而不是編譯期常量。雖然編譯期常量略快一些,但是沒有運行時常量那麼靈活。應僅僅在那些效能異常敏感,且常量的值在各個版本之間絕對不會變化時,才使用編譯器常量。 運行時常量使用readonly關鍵字聲明,編譯時間常量使用const關鍵字聲明:1
Time of Update: 2018-12-07
文章目錄 使用as或is的優勢as操作符的限制is操作符的使用
Time of Update: 2018-12-07
文章目錄 引用相等和值相等為什麼不應該重新定義靜態ReferenceEquals()和Equals()方法什麼情況下需要重寫Equals()執行個體方法如何覆寫Equals()執行個體方法 建立自訂的類型時(無論是類還是struct),應為類型定義”同等性“的含義。在C#中為我們提供了四種不同的函數來判斷兩個對象是否”相等“:1 public static bool ReferenceEquals(object left,
Time of Update: 2018-12-07
文章目錄 使用#if/#endif 語句的缺點更好的解決辦法——使用Conditional特性Conditional特性的限制 #if/#endif 語句常用來基於同一份源碼產生不同的編譯結果,其中最常見的就是debug版和release版。但是這些工具在實際應用中並不是非常友好,因為它們容易被濫用,其字碼頁進而難以理解或調試。C#設計中考慮到這個問題,並提供了更好的工具——Conditional特性,用來為不同的環境編譯不同的機器碼。
Time of Update: 2018-12-07
查詢文法(query syntax)可以讓程式邏輯的表達由“命令式”轉換為“聲明式”。查詢文法定義了想要的結果,而把具體實現交給其他的專門實現。使用查詢文法(實現了查詢運算式模式的方法文法也可以)要比傳統的命令式迴圈結果更加清晰的表達你的意圖。 下面我們觀察一個使用命令式方法填充一個數組,然後將其內容輸出至控制台: 1 static void Main(string[] args) 2 { 3 int[] foo = new int[100];
Time of Update: 2018-12-07
文章目錄 實現IFormattable介面IFormatProvider介面