Time of Update: 2017-02-28
使用自動屬性後,你可以不用手工聲明一個私人成員變數以及編寫get/set邏輯,取而代之的是,編譯器會自動為你產生一個私人變數和預設的get/set 操作。系統為你產生的私人變數在IDE中,你是看不到的,如下圖:當然如果你希望屬性中有些賦值或者取值邏輯校正,自動屬性可是不適合你的。上面的代碼我們編譯後,再用 Reflector 反編譯後,我們可以看到上述代碼中的屬性變成了如下代碼:這個編譯器給我們產生的私人變數,顯然不是那麼容易重名的。
Time of Update: 2017-02-28
C#2.0實現的Nullable資料類型,雖然說只是一個小小的cookie,但不得不說是C#矢志不渝的延續了它人性化的特點,我們終於不用再使用object來存放簡單資料來通過==null測試。從表面上看這個功能或許並無太大的創新意義,但不知你是否也和我一樣在記憶裡埋有對類似int a=null;通不過編譯時間的抱怨?
Time of Update: 2017-02-28
今天用C#2.0的泛型改寫了我的一個系統的訊息實現,感覺非常不錯,很簡潔而且速度快了(MSDN上那麼說的,暗示誘導使我也有此感覺,呵呵)。我們嘮會兒嗑,回顧一下經典內容:.NET架構的訊息模型,構建於一個串連事件控制代碼的代理(delegate),要想觸發某個事件,兩個基本元素是必須考慮的: 1、事件的源頭觸發者,它定義了一個事件:public class EventSender{ ...
Time of Update: 2017-02-28
變數 首先說明一下,此新特性的專題基於MS五月份分布的C#3.0規範,但是官方中文版還沒有出來,結合自己的實踐和理解,希望能和大家一起分享某些前沿的東東,很有可能一些地方會出錯,望拋磚。 在C# 3.0裡面, 可以對局部變數進行隱式型別宣告, 就是在聲明時可以不指定該變數的類型, 變數在初始化的時候會由編譯器從運算式的上下文中推出真正的類型, 對開發人員來說, 無疑是簡化了很多, 主要是通過新的關鍵字var, 有如下面的例子:var i =
Time of Update: 2017-02-28
visual|快速入門|文法 對於那些從未見過C#代碼的讀者,本文將介紹C#程式設計語言的基本文法。記住,現在只是對C#的淺嘗輒止,僅足以協助你理解本文中的範例代碼。在後面我們還會充分地深入C#語言,建立一個功能完整的學生選課系統(Student Registration System, SRS)應用程式。 如果你還沒有花時間閱讀本書前言,現在正當其時!SRS系統的需求在文前介紹篇的末尾部分被作為一個案例來介紹。 “虛擬碼”vs.真正的C#
Time of Update: 2017-02-28
visual|變數|快速入門 與現實世界不同,在編程的世界中,每一件事情要麼黑,要麼白;要麼對,要麼錯;要麼是真的,要麼是假的。例如,假定你建立一個名為x的整數變數,把值99賦給x,然後問:“x中包含了值99嗎?”答案顯然是肯定的。如果你問:“x小於10嗎?”答案顯然是否定的。這些正是布爾(Boolean)運算式的例子。一個布林運算式肯定求值為true或false。
Time of Update: 2017-02-27
C#自誕生起就取眾家之長,集萬千寵愛於一身,而且還是名門望族.NET Framwork家族中的一員,可謂天生高貴。編程界的老大哥JAVA,在發展了十幾年後,已經健壯和強大。藉助開源社區的SSH(struts+
Time of Update: 2017-02-28
1. 連到內網,找到AD的domain地址nslookup set types=all_ldap._tcp2. 驗證AD的函數public bool ADLogin(string userName, string password) { // sample : // LDAP://xxx.com string domain =
Time of Update: 2017-02-28
1. 首先EF的Repository需要抽象的行為提到介面中。例如 :public interface IXXXContext : IDisposable { IXXXContext NewInstance();// db sets DbSet<AAABBB> aaa { get; set; }...// common Database Database { get; } DbContextConfiguration
Time of Update: 2017-02-28
1. package-install GlobalPhone2. Phone.cs聽聽 聽 public class Phone { public string CountryCode { get; set; } public string InternationalNumber { get; set; } public string NationalNumber { get; set; } public string
Time of Update: 2017-02-28
C# 已知經緯度計算兩點距離函數public Task<double> GetDistance(double lat1, double lon1, double lat2, double lon2) { int R = 6371; double rLat1 = ToRadian(lat1); double rLat2 = ToRadian(lat2); double dLat =
Time of Update: 2017-02-28
擴充MongoDB C# Driver的QueryBuilder由於不想直接hardcode "ClassA.MemberA.MemberB" 這樣的字串 ,寫了以下幾個類,用於以下常用的情境:1. 運算式轉換成字串函數: ExpToStr()2. Collection函數:當有集合成員時,可以使用此類,將返回QueryCollection對象,這個類的代碼之後附上3.
Time of Update: 2017-02-28
本文主要介紹和xero OAuth的整合過程,以後再與其他第三方的OAuth的整合過程也將類似。 另外由於xero官方的文檔非常有限,因此有必要進行總結一下。Xero 是一個財務系統,可用於替代產品賬單模組的實現。www.xero.com瞭解OAuth
Time of Update: 2017-02-28
項目update到了mongoDB C# driver 2.2 , 發現從1.9到2.0的變化還是很大的,整合了一些常用的操作附加demo代碼: class Program { const string CollectionName = "video"; static void Main(string[] args) { // remove the demo collection then
Time of Update: 2017-02-28
在項目中,在使用雜湊表時,有時會需要Override GetHashCode。這裡給出一種普遍的做法:版本1:實現一個helper,傳遞類型T,返回這個類型的hashcode。函數邏輯很直接,只是做了null check而已;如果obj不為空白,則直接使用obj的hash code。public class HashHelper{private int _seed = 17;public int Hash<T>(T obj){// why 31?//
Time of Update: 2017-02-28
今天偶然與建議不要用for,可讀性太差效能又低,可我個人認為要根據具體情況而定,畢竟for在大部分語言的關鍵字,可讀性不可能因為一個關鍵字的替代而變好,多數取決於設計和編碼習慣。至於效能,打算寫段代碼對它們分別測試一下。var arr = Enumerable.Range(0, 100000000).ToList();var sw = Stopwatch.StartNew();for(var i = 0;i < arr.Count;
Time of Update: 2017-02-28
1. 安裝nuget-install package DoddleReport-install package DoddleReport.iTextSharp2. 執行個體代碼static void Main(string[] args) { var query = GetAll(); var report = new Report(query.ToReportSource());
Time of Update: 2017-02-28
初始化:ListeningPort = int.Parse(ConfigurationManager.AppSettings["ListeningPort"]);SendingPort = int.Parse(ConfigurationManager.AppSettings["SendingPort"]);SendingIp =
Time of Update: 2017-02-28
1. download sqlite dll from:http://www.sqlite.org/download.htmlwindows 版本:http://www.sqlite.org/2016/sqlite-dll-win32-x86-3130000.zip2. 拷貝 sqlite3.dll 到 bin 目錄3. 安裝nuget: Install-Package sqlite-net安裝後會在項目中找到SQLite.CS和SQLiteAsync.cs4. demo 代碼:4.1
Time of Update: 2017-02-28
C# 讀COM PORT參照了MSDN的樣本:https://msdn.microsoft.com/en-us/library/system.io.ports.serialport.aspx還是不工作,需要加這一行代碼:mySerialPort.DtrEnable = true;DtrEnable屬性的描述:Gets or sets a value that enables the Data Terminal Ready (DTR) signal during serial