在c#中实现接口不是使用关键字implements 而是使用c++中的接口实现方法“:”来实现
2引用类型 的显示转换只转换栈中的引用值对于堆中的对象的数据类型和值没有任何影响
对于引用的 转换主要是有基类到派生类的转换、类到其实现接口的转换,system.array到任何数组类型 的转换,SYSTEM.delegate类型到委托类型的转换
3赋值运算符和条件运算符是左结合运算符其他都是右结合运算符
4c#支持操作运算符的重载,但是重载运算符的操作数只能是对象或自定义结构体的引用
所有重载运算符均为类的静态方法且必须是使用public进行修饰的
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ChengZai
{
class Program
{
public int value { get; set; }
static void Main(string[] args)
{
Program p1 = new Program();
Program p2 = new Program();
p1.value = 10;
p2.value = 20;
Program p = new Program();
p = p1 + p2;
Console.WriteLine(p.value);
}
public static Program operator +(Program p1,Program p2){
Program p = new Program();
p.value = p1.value + p2.value;
return p;
}
}
}
运算符重载是java中不允许的,但是在c#中的运算符重载时非常方便的 ,更加灵活
一元运算符重载形式:
Public static 自定义类型 operator 要重载的运算符(参数类型)
二元运算符重载形式:
Public static 自定义类型 operator 要重载的运算符(参数类型1,参数类型2);
要重载等于运算符时必须同时重载不等于 运算符 == 和!=必须成对存在
< 和> ,<=和>=也必须成对存在必须成对重载。
其中不能重载的运算符有=, .,?:,->,new is sizeof,typeof其他常用运算符都可以重载。
2在 switch语句中所有的case子句处理的对象只能是枚举值,常量值,和文本值,不能是复杂的表达式语句。所有case语句后必须跟break语句,区别于c++的对方是不支持从一个case标签显示的贯穿到另一个case标签但是;有一个例外就是当case语句中没有代码时可以case语句间上下贯穿。在default字句中也必须包含break子句用于跳出switch语句。在switch语句中default语句并不是必须的。
3在c#中静态函数只能访问静态的数据成员和调用静态函数,其规则和java中相同
4 标签语句的有效范围在定义标签语句的最小代码块范围内,可以使用goto语句方便的的在语句块内转移控制权,但是仅限于从块内到块外的控制权转移,标签语句的有效范围包括其有效代码块和其中的嵌入的块,如果两个同名标签的有效范围重叠,则会引发一个编译期错误。
5在for循环的控制变量中可以包含多个控制变量用逗号隔开,这意味着所有的控制变量有相同的数据类型。布尔表达式的条件可以有多个
6在foreach循环中的变量是只读的不能对其变量执行写操作或赋值操作变量保持数组或集合对象中的每一个值,依次遍历执行读操作,不可对其进行修改操作,变量为只读的。
7using指令的作用是导入制定的命名空间,using语句的作用是确保正确使用IDisposable对象 的方便语法,当使用完毕实现了IDisposable接口的对象以后自动调用它的dispose()方法形式为
Using(局部变量声明及初始化,多个使用逗号分隔){
//语句或语句块
}
Using(Font font1=new Font(“arial”,10.0f)){
Byte charset=font1.GdicharSet;
}