Robin Chow's C++ Blog

 

[导入]C# 学习系列之常量

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/

posted @ 2007-10-23 20:45 Robin Chow 阅读(94) | 评论 (0)编辑 收藏

[导入]C# 学习系列之数据类型

C# 的数据类型包括值类型和引用类型。其中值类型可分为一下几种:
  • 简单类型
    1. 整数类型:byte(8位),short(16位),int(32位),long(64位)
    2. 布尔类型:在 C# 中布尔类型是一种单独的类型,只能取 true 和 false 两个值,这和 C++ 不一样。
    3. 实数类型:浮点类型,十进制类型
    4. 字符类型: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/

posted @ 2007-10-23 20:45 Robin Chow 阅读(97) | 评论 (0)编辑 收藏

[导入]C# 学习系列之类型转换

  1. 不存在到 char 类型的隐式转换,即其它整型值不能自动转换为 char 类型。
  2. 隐式枚举转换允许把十进制整数 0 转换成任何枚举类型,对应其它的整数则不存在这种隐式转换。
  3. 如果要进行数组的转换,则数组的元素类型必须是引用类型。
  4. 为了确保显式引用转换的正常执行,要求源变量的值必须是 null 或者它所引用的对象的类型可以被隐式引用转换位目标类型,否则显示引用转换失败,将抛出一个 InvalidCastException 异常。
  5. 不论是隐式还是显式引用转换,虽然可能会改变引用值的类型,却不会改变值本身。

文章来源:http://my.donews.com/robinchow/2007/04/06/c-%e5%ad%a6%e4%b9%a0%e7%b3%bb%e5%88%97%e4%b9%8b%e7%b1%bb%e5%9e%8b%e8%bd%ac%e6%8d%a2/

posted @ 2007-10-23 20:45 Robin Chow 阅读(74) | 评论 (0)编辑 收藏

[导入]C# 学习系列之流程控制

  1. C# 的 if 语句与 C、C++不同,即 if 后的逻辑表达式必须是布尔类型的。
  2. C 和 C++语言允许 switch 语句中 case 标签后不出现 break 语句,但 C#不允许这样,它要求每个标签项后使用 break 语句或跳转语句 goto,即不允许从一个 case 自动遍历到其它 case,否则编译时将报错。如果要像C,C++那样,执行完后继续遍历其它的语句,只需要明确加入这两条跳转语句即可:
    • goto case label:跳至标签语句执行
    • goto default:跳至 default 标签执行
  3. 异常处理语句:
    • C# 里的所有异常都表现为一个类的实例,这个类继承自 System.Exception 类。而在 C++中,任何类型的任何值都可以表示异常。
    • 在 C# 中,系统级的异常如溢出,零除数等,由于有一个定义完好的异常类因而可以等同于应用程序级错误条件。
    • 在一个 catch 块中,可以用不含表达式的 throw 语句将该块捕捉到的异常再次抛出,对于一场变量的分配不会改变再次抛出的异常。
    • 当 try 语句执行完以后,finally 块中的语句必将被执行。不论是否会发生由以下原因导致的程序控制转移:
      • 普通操作的结果
      • 执行 break、continue、goto 或 return 语句的结果
      • 将异常传播到语句之外的结果

文章来源:http://my.donews.com/robinchow/2007/04/06/c-%e5%ad%a6%e4%b9%a0%e7%b3%bb%e5%88%97%e4%b9%8b%e6%b5%81%e7%a8%8b%e6%8e%a7%e5%88%b6/

posted @ 2007-10-23 20:45 Robin Chow 阅读(81) | 评论 (0)编辑 收藏

[导入]C# 学习系列之类

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/

posted @ 2007-10-23 20:45 Robin Chow 阅读(63) | 评论 (0)编辑 收藏

[导入]C#学习系列之方法

C#中方法的参数有四种类型:
  • 值参数,不含任何修饰符
  • 引用型参数,以 ref 修饰符声明
  • 输出参数,以 out 修饰符声明。使用 out 修饰符时,传递的变量不需要事先初始化,在方法返回后,传递的变量被认为经过了初始化。
  • 数组型参数,以 params 修饰符声明。如果形参表中包含了数组型参数,那么它必须在参数表中位于最后。另外,参数只允许是一维数组。比如,string[]和 string[][]类型都可以作为数组型参数,而 string[,]则不能。最后,数组型参数不能再有 ref 和 out 修饰符。  

文章来源:http://my.donews.com/robinchow/2007/04/17/post-070417-105355-780/

posted @ 2007-10-23 20:45 Robin Chow 阅读(78) | 评论 (0)编辑 收藏

[导入]Convert from string to int

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/

posted @ 2007-10-23 20:45 Robin Chow 阅读(372) | 评论 (0)编辑 收藏

[导入]C#学习系列之域和属性

  • 域表示与对象或类相关联的变量,相当于 C++中的类的简单成员变量。域的声明中如果加上了 readonly 修饰符,表明该域为只读域。对于制度与我们只能在域的定义中和它所属类的构造函数中进行修改,在其它情况下,域是“只读”的。使用 static readonly 和使用 const 的区别是 const 型表达式的值是在编译时形成,而 static readonly 表达式的值直到程序运行时才形成。
  • 属性是对现实世界中实体特征的抽象,它提供了对类或对象性质的访问。虽然属性和域的语法比较类似,但不能把属性当作变量那样使用,也不能把属性当作引用型参数或输出参数来进行传递。

文章来源:http://my.donews.com/robinchow/2007/04/17/post-070417-113311-1000/

posted @ 2007-10-23 20:45 Robin Chow 阅读(105) | 评论 (0)编辑 收藏

[导入]C#学习系列之事件和索引指示器

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/

posted @ 2007-10-23 20:45 Robin Chow 阅读(179) | 评论 (0)编辑 收藏

[导入]C#学习系列之继承

  1. C#中,派生类只能从一个类中继承。也就是说,C#不支持多继承。
  2. 如果要覆盖从基类继承而来的成员,编译器将发出警告,使用 new 关键字可以关闭这个警告。如果在成员声明中加上了 new 关键字修饰,而该成员事实上并没有覆盖继承的成员,编译器将会给出警告。
  3. 在派生类中声明对虚方法的重载,要求在声明中加上 override 关键字,而且不能有 new,static 或virtual 修饰符。
  4. 抽象类使用 abstract 修饰符。这点和 C++ 中对抽象类的声明不同,C++ 没有对抽象类进行直接声明的方法,而认为只要在类中定义了纯虚函数,这个类就是一个抽象类。
  5. 一个方法声明中如果加上 abstarct 修饰符,我们称该方法位抽象方法。如果一个方法被声明也是抽象的,那么该方法默认也是一个虚方法。事实上,抽象方法是一个新的虚方法,它不提供具体的方法实现代码。还要注意,抽象方法在派生类中不能使用 base 关键字来进行访问。
  6. 密封类在声明中使用 sealed 修饰符,这样就可以防止该类被其它类继承,密封类可以阻止其他程序员在无意中继承该类,而且密封类可以起到运行时优化的效果。
  7. 对方法使用 sealed 修饰符,我们称该方法位一个密封方法。密封方法可以防止该方法所在类的派生类中对该方法的重载。

文章来源:http://my.donews.com/robinchow/2007/04/23/post-070423-112707-477/

posted @ 2007-10-23 20:45 Robin Chow 阅读(97) | 评论 (0)编辑 收藏

仅列出标题
共9页: 1 2 3 4 5 6 7 8 9 

导航

统计

常用链接

留言簿(1)

随笔分类

随笔档案

搜索

最新评论

阅读排行榜

评论排行榜