AaronYang C 人愛學不學 2

2022-01-12 06:15:25 字數 3230 閱讀 2844

新建記事本,名字為 helloworld.cs

using

system;

namespace

hello}}

簡單的使用csc命令編譯:

我的目錄在:c:\program files (x86)\microsoft visual studio 12.0\common7\tools\vsvars32.bat

輸入命令:csc /out: 輸出目錄及檔名(.dll或者.exe) 源**檔案

csc /out:f:\net\2023年12

月25日003728\helloworld.exe f:\net\2023年12月25日003728\helloworld.cs

常用的還有csc /t:library  源**檔案      編譯成dll

csc /t:exe  源**檔案      編譯成exe

csc /t:module  源**檔案      

csc /t:winexe  源**檔案     

/r用來指定引用的dll

源**主入口檔案可以是 *.cs表示編譯資料夾下的所有cs檔案

或者生成xml檔案-》 csc 源**檔案 /doc:路徑+檔名.xml

或者/main:指定哪個方法作為程式的入口點

當然還有其他形式,不具體介紹了,雖然你看似沒用,但是 舉個實際案例:專案持續發布軟體,都是自己拉取svn**,然後自動編譯,或者網頁上開發人員自己點編譯,現在覺得還沒用嗎?

這兩種資料儲存在記憶體的不同的地方。值型別儲存在堆疊中,儲存值,而引用型別儲存在託管堆上,簡稱堆上,儲存引用位址。

拆箱與裝箱的本質:值型別在轉換到system.object時引發的堆疊和堆的一系列的移動操作。裝箱:值型別從堆疊上被複製到堆上,而拆箱時從堆上覆制到堆疊上。所以對效能有影響

下面看個 ay=null    說明 ay是個引用型別,表示它不引用任何物件

除了眾所周知的一些型別,重點講下 struct 值型別 和class引用型別

結構可以擁有屬性和方法,但沒有繼承可言,結構可以重寫system.object的虛方法,但不能定義新的虛方法或者抽象方法。不能擁有無參建構函式,也不能為成員變數定義初始值。但效能好,class的功能更多。

類和結構實際上是建立物件的模板。

3.1列舉一些值型別

1.整型(從位數少到多排列 8,16,32,64)    有符號(sbyte,short,int,long)    無符號(byte,ushort,uint,ulong),它們每個都對應了cts中的乙個型別,例如long 對應system.int64

2.浮點(從位數少到多排列 32,64)  float(cts:system.single) 32位單精度浮點數     double(cts:system.double) 62位雙精度浮點數,例如 float ay=12.3f,double ay1=12.3e2,e2代表10的指數是2,就是12.3乘以10的2次方

decimal (cts:system.decimal) 128位高精度十進位制數表示法,數字後面加m表示decimal

3.bool (cts:system.boolean)

4.char (cts:system.char) 16位的(unicode)字元

5.列舉enum

3.2列舉一些引用型別

object,string等

這裡的string很特殊,是個引用型別,比如2個string 同時引用乙個string位址,當s1修改值時候,s2沒有變化,因為修改乙個字串,就會建立乙個全新的string物件,不信可以執行下面例子。string是比較特殊的引用型別,本質上是運算子過載的結果

string s1 = "s1"

;

string s2 =s1;

console.writeline(s1);

console.writeline(s2);

s1= "

news1";

console.writeline(s1);

console.writeline(s2);

console.readline();

效果:

goto 不只是跳轉到指定標籤,還可以用在switch case中,跳轉到指定case裡面

跳標籤的方式,這裡不講了。

都知道可以 互相巢狀namespace,給namespace起別名操作,雙冒號提下吧

這裡的::效果等同於 點號,但是我沒說就是點號的替代品。

你肯定用過,例如 #region #endregion

1. #define 和#undef      例如 #define debug,經常與其他預處理器結合使用。

2.同樣c#還包括很多,例如#if #elif(等於 else if ) #else #endif,例如 #if debug     #endif 表示 如果專案在debug模式下,就執行下面的**.

3.#warning "警告測試"      #line    #pragma

static 類名{}  

不能有訪問修飾符,靜態建構函式至多執行1次。即在**引用類之前呼叫它。

不能帶引數,乙個類也只能1個靜態建構函式。只能訪問類的靜態成員,不能訪問類的例項成員。

他可以與無引數的建構函式共存。在靜態建構函式裡可以給外部的static readonly欄位賦值

建構函式提供了建構函式初始化器,使用this或者base呼叫。

例如 public a(string des):base(des,4){}

AaronYang C 人愛學不學 2

新建記事本,名字為 helloworld.cs using system namespace hello 簡單的使用csc命令編譯 我的目錄在 c program files x86 microsoft visual studio 12.0 common7 tools vsvars32.bat 輸入...

絕對隨筆 學還是不學,從模式說起

首先,恭賀包建強同志終於得償夙願,成為了腦袋的同事,哈哈。昨天和這廝聊天,提到我現在的想法基本是,設計程式沒有那麼多道道,關鍵就是腳踏實地的去幹。我現在最反感的就是用很多來自於技術社群的標準,去判斷乙個程式究竟是不是設計 實現的足夠好。老包似乎並不太認可 他說他在原來的公司的時候,和組裡其他人最大的...

愛總是讓人受傷

愛總是讓人受傷 代騰飛 2008年10月6日 於成都 愛總是令人那麼的神往 卻又總是讓人屢屢受傷 情總是那麼的熾熱蕩漾 卻又總是把人心靈灼傷 愛總以為可以地久天長 那份溫存卻過不了天亮 情總以為可以地老天荒 卻總讓人傷得遍體鱗傷 愛情總是以浪漫登場 分手的結局卻不知道如何收場 明明說了要彼此相忘 心...