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/