C# 学习笔记(Method) - 05

 
 
  • Function and Method are synonymous in C#
    Encapsured in some class and struct
    Doesn't support global method

Value and Reference Parameters

In both case, a copy of parameters passes from caller to called method

  • Value Type:   a copy of the data
  • Reference Type:    a copy of the reference

ref Method Parameter

This keyword tells the C# compiler that the arguments being passed point to the same memory as the variables in the calling method.

Limitation: Initialize the passed arguments efore calling the method

The ref parameters are prefixed with an ampersand(&)
stind.   popping indirect values off the stack.

out Method Parameter

Doesn't need the calling code to initialize the passed arguments
The arguments must be modified in the method.

Method Overloading

Enable C# programmer to use same method name multiple times with only the passed parameters changed.

Each method's parameters list must be different, it doesn't count if a method's return type and access modifier are different

The buttom line is that that must be difference in the parameter list

Compiler consider ref and out equivalent to each other.

Overloading Constructor

default constructor: Every instantiation must have a matching constructor if the code is to compile, even if the constructor doesn't do anything.

Inheritance and Overloading

An overloaded method is considered an overload even if the overloaded versions of the function exist in a base class rather than the current class.

Variable Method Parameters

Params: Specify a variable number of a method parameters by using params keyword and specify an array in the method's parameter's list.

Virtual Method (method overriding)

Use the new keyword with the derived class's method definition, the fact base calss and derived class have identical signature is pure coincidence and of no consequence

Polymorphism --- enable to define the method multiple times throughout the class hierarchy so that the runtime can call the apropriate version of the method for specific object being used.

early binding
late binding

virtual keyword on the base class
override keyword on the derived class

callvirt.   Calls virtual method of obj.(and nonvirtual)

Virtual function table -- VTBL

newslot.   new slot in the object's VTBL
virtual.   a virtual method

in the non-polymorphism, both the base and the drived class are not virtual

  • The override function must have the same access level as virtual function it override.
  • A virtual member can't be declared as private.
  • To declare a virtual protected member is legal but dumb

combine new and virtual when declaring a class function

Calling Virtual Method from Constructors

Static methods

A static method is a method that exists in a class as whole, rather than in specific instance of the class.

Class.Method syntax to call the method. This syntax is necessary even if the user has a reference to an instance of the class

Access to class member

A static method can access any static memeber within the class, but it can't access an instance member.

Nonstatic method can access both static and nonstatic members.

Static Constructor

  • Only one static constructor
  • can't take parameters
  • can't access instance member -- include this pointer
  • a static consturctor executed before the first instance of a class is created
  • access modifiers are not allowed on static constructors
  • you can provide a nonstatic constructor with the same signature as the static constructor, both the constructors will be called and the static version being called first.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值