C# 中命名變量基本和 C++ 中的規則相同,需要注意的一點是,C# 中有一點例外,那就是允許在變量名前加上前綴“@”。因此,我們可以用前綴“@”加上關鍵字作為變量的名稱。這主要是為了與其它語言交互時避免沖突。因為前綴“@”實際上并不是名稱的一部分,其它的變成語言就會把它作為一個普通的變量名。
在C#語言中,我們把變量分為七種類型,它們是:靜態變量、非靜態變量、數組元素、值參數、引用參數、輸出參數還有局部變量。其中局部變量不會自動被初始化,這點和其它幾種類型不同。
文章來源:
http://my.donews.com/robinchow/2007/04/05/c-%e5%ad%a6%e4%b9%a0%e7%b3%bb%e5%88%97%e4%b9%8b%e5%b8%b8%e9%87%8f/
C# 的數據類型包括值類型和引用類型。其中值類型可分為一下幾種:
- 簡單類型
- 整數類型:byte(8位),short(16位),int(32位),long(64位)
- 布爾類型:在 C# 中布爾類型是一種單獨的類型,只能取 true 和 false 兩個值,這和 C++ 不一樣。
- 實數類型:浮點類型,十進制類型
- 字符類型:C# 提供的字符類型采用 Unicode 字符集,一個 Unicode 的標準字符長度為 16 位。C# 中字符和整數之間不能進行轉換,這點和 C++ 不一樣。
- 結構類型
- 枚舉類型:為枚舉類型的元素所賦的值的類型限于 long、int、short 和 byte 等整數類型。
C# 中的引用類型有四種:
- 類:object 類是所有其它類型的基類,C# 中的所有類型都是直接或間接地從 object 類中繼承。因此,對于一個 object 的變量可以賦予任何類型的值。對 object 類型的變量聲明采用 object 關鍵字,這個關鍵字是在 .net 框架結構為我們提供的預定義的名字空間 System 中定義的,是類 System.Object 的別名。
- 代表:代表實際上相當于 C# 中的函數指針原型。與指針不同的是,代表在 C# 中是類型安全的。
- 數組:C# 中提供的 System.Array 類是所有數組類型的基類。
- 接口
文章來源:
http://my.donews.com/robinchow/2007/04/05/c-%e5%ad%a6%e4%b9%a0%e7%b3%bb%e5%88%97%e4%b9%8b%e6%95%b0%e6%8d%ae%e7%b1%bb%e5%9e%8b/
C# 中類的成員有以下類型:
- 成員常量,代表與類相關聯的常量值。
- 域,即類中的變量。
- 成員方法,復雜執行類中的計算和其它操作。
- 屬性,用于定義類中的值,并對它們進行讀寫。
- 事件,用于說明發生了什么事情。
- 索引指示器,允許像使用數組那樣為類添加路徑列表。
- 操作符,定義類中特有的操作。
- 構造函數和析構函數,分別用于對類的實例進行初始化和銷毀。
包含有可執行代碼的成員被認為是類中的函數成員,這些函數成員有方法、屬性、索引指示器、操作符、構造函數和析構函數。
C# 的成員訪問控制方式除了公有成員、私有成員和保護成員之外,還有內部成員。使用 internal 修飾符的類的成員是一種特殊的成員。這種成員對于同一包中的應用程序或庫是透明的,而在包.Net 之外是禁止訪問的。
文章來源:
http://my.donews.com/robinchow/2007/04/09/c-%e5%ad%a6%e4%b9%a0%e7%b3%bb%e5%88%97%e4%b9%8b%e7%b1%bb/
The methods:
1) From the C standard library, using atoi:
#include
#include
std::string text = "152";
int number = std::atoi( text.c_str() );
if (errno == ERANGE) //that may be std::errno
{
//the number was too big/small to store completely, number is either LONG_MAX or LONG_MIN
}
else if (errno == ????)
//maybe EINVAL? not sure, man page dosn't seem to say...
//other possibilities are E2BIG and EDOM (or ERANGE maybe again)...
//but I'd vote for EINVAL
{
//unable to convert to a number
}
2) From the C++ standard library, using strstream:
#include
#include
std::string text = "152";
int number;
std::istringstream ss( text );
ss >> number;
if (! ss.good())
{
//something happened
}
3) From the Boost library, using lexical_cast:
#include
#include
try
{
std::string text = "152";
int number = boost::lexical_castint >( text );
}
catch( const boost::bad_lexical_cast & )
{
//unable to convert
}
文章來源:
http://my.donews.com/robinchow/2007/04/17/post-070417-111701-329/
1.事件
典型的事件聲明:
public deletage void EventHandler(object sender, EventArgs e);
pbulic event EventHandler Click;
注意:使用了 abstract 修飾符的抽象事件必須省略事件訪問說明,否則編譯器會提示錯誤。事件所聲明的類型必須是一個代表類型,代表類型應預先聲明,如上例中的public delegate void EventHandler。
可以使用事件訪問器來添加和刪除事件:
public event MouseEventHandler MouseUp{
add {AddEventHandler(mouseUpEventKey, value); }
remove {AddEventHandler(mouseUpEventKey, value); } }
2.索引指示器
典型的索引指示器聲明:
public string this[int nIndex]
{ get{...} set{...}}
文章來源:
http://my.donews.com/robinchow/2007/04/23/post-070423-094811-418/