Lamda箭头=>
static (double Myval1, double MyVal2) => Myval1 * MyVal2;
ref关键字
对参数进行引用传递。在函数定义和调用时都要在参数面前使用ref。
使用时注意两个点:
out关键字
out关键字对参数进行引用传递。
out关键字和ref关键字有两个重要区别:
函数重载
委托
delegate double ProcessDelegate(double param1, double param2); //定义一个委托,其名为ProcessDelegate
static double Multiply(double param1,double param2) => param1*param2; //这两个函数都符合ProcessDelegate规定的外形
static double Divide(double param1,double param2) => param1/param2;
......
ProcessDelegate process; //定义一个ProcessDelegate类变量
.......
process = new ProcessDelegate (Multiply); //括号中填的是函数的名字,而不是相关参数
/* 等价写法 process = Multiply;*/
......
process = new ProcessDelegate (Divide);
对象
字段
class MyClass
{
public int MyInt;
}
readonly
关键字:字段只能在执行构造函数的过程中赋值,或由初始化赋值语句赋值。
static
关键字:静态字段。必须通过定义它们的类来访问,而不是通过这个类的对象实例来访问。
属性
属性时字段的属性,能过通过属性访问和设定字段。
定义举例
public int MyIntProp
{
get
{
//Property get code.
}
set
{
//Property set code.
}
}
value
关键字:用户提供的属性值。class MyClass
{
private int myInt;
public int MyIntProp
{
get
{
return myInt;
}
set
{
if(value >= 0 && value <= 10)
myInt=value;;
else
throw(new ArgumentOutOfRangeException("MyIntProp", value, "MyIntProp must be assigned a value between 0 and 10."));
}
}
}
private int myDoubleInt = 5;
public int MyDoubleIntProp => (myDoubleInt * 2);
自动属性
public int MyIntprop { get; set;}
get
和set
存取器。构造函数
CupOfCoffee myCup = new CupOfCoffe();
System.Object.Object()
。public class MyDerivedClass : MyBaseClaee
{
public MyDerivedClass (int i, int j) : base(i)
{
// Do somethings.
}
}
this
关键字指定在使用指定的构造函数前,.NET实例化过程对当前类使用非默认的构造函数。public class MyDerivedClass : MyBaseClass
{
public MyDerivedClass() : this(5,6) { }
public MyderivedClass(int i, int j) : base(i) { }
}
析构函数
~
前缀的类名来声明。System.Object
根类中的Finalize()
。静态成员
接口
public interface IMyInterface
{
// Interface members.
}
public class MyClass : IMyInterface
{
void IMyInterface.DoSomething() {}
public void DoSomethingElse() {}
}
MyClass myObj = new MyClass();
IMyInterface myInt = myObj;
myInt.DoSomething();
继承
protected
关键字,限定只有派生类才能访问该成员。外部代码不能访问private
和protected
成员。sealed
类不能作为基类。多态性
接口的多态性
Cow myCow = new Cow();
Chicken myChicken = new Chicken();
IConsume consumeInterface;
consumeInterface = myCow;
consumeInterface.EatFood();
consumeInterface= myChicken;
consumeInterface.EatFood();
类定义
class myClass
{
// Class members.
}
internal
:默认,只有当前项目中的代码才能访问。
public
:其它项目中的代码可以访问。
abstract
:类是抽象的,只能继承。
sealed
:密封,不能继承。
在类定义中指定继承
public class MyClass : MyBase
{
// Class members.
}
public class MyClass : MyBase, IMyFirstInterface, IMySecondInterface
浅度复制
System.Object
的MenberwiseClone()
方法来完成。MenberwiseClone()
是protected
方法。深度复制
暂略。
成员的访问级别
public
:任何代码都可以访问。private
:默认,只能由类中的代码访问。internal
: 只能由定义它的程序集的内部代码访问。protected
:只能由类或派生类中的代码访问。方法的定义中的关键字
virtual
:方法可以重写。abstract
:方法必须在非抽象的派生类中重写。override
:方法重写了一个基类方法。extern
:方法定义在其他地方。sealed
:和override
搭配使用,指定派生类中不能对这个方法做进一步修改。隐藏基类方法
virtual
时才可以override
。public class MyBaseClass
{
public void DoSomething()
{
// Base implementation.
}
}
public class MyDerivedClass : MyBaseClass
{
new public void DoSomething() //new可以省略
{
// Derived class implementation, hides base implementation.
}
}
base
关键字:派生类重写或隐藏了基类的方法,但是又想使用基类原来的方法,就是用base关键字。this
关键字
部分类定义
partial
关键字。可将字段、属性和构造函数放在一个文件中,而把方法放在另一个文件中。部分方法定义
partial
关键字。