C#中方法的调用

Posted dotNET编程大全

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#中方法的调用相关的知识,希望对你有一定的参考价值。


1.同一个类中方法的调用:

静态方法可以直接调用静态方法

静态方法不能直接调用非静态方法,静态方法先生成。

非静态方法可以直接调用静态方法

如果静态方法要调用非静态的方法,必须使用实例成员

2.不同类中方法的调用

静态方法,使用类名.静态方法名称()

非静态方法使用,类的实例对象.方法名称()

3.方法的调用遵循的原则:一一对应原则,永远默认都是第一个实参赋值给第一个形参

* 类型需要一致,double--float,子类可以替换父类(反例)
* 数量需要一致,params,还可以有默认值(反例)
* 顺序需要一致 ,可以使用“参数=值”的方式,可选参数必须出现在所有必选按参数之后。
* 如果某个参数使用了(参数:值)的方式,那么之后的所有参数也必须使用这种格式。

4.普通参数传递时的特点

* 传递参数就是传递栈空间里面存储内容的副本

* 如果是值类型,那么栈空间里面存储的是真实的值

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks; namespace 方法调用的原则{ class Program { /* * 方法调用遵循的原则:一一对应原则,永远都是第一个实参赋值给第一个形参 * 1.类型需要一致:(double-->float--int 子类可以替换父类)---【反例】 * 2.数量需要一致:(params,还可以有默认值)---【反例】 * 3.顺序需要一致:可以使用”参数:值“的方式,这种方式术语是--命名参数。(PS:普通的参数传递,术语是:【位置参数】-->就是说每个实参,必须一一形参的位置) */  static void Main(string[] args){ //2.数量需要一致:(params)---【反例】 GetSameParams(); GetSameParams(,,,);  //2.数量需要一致:还可以有默认值)---【反例】 ShowInfo(); ShowInfo(, "哈哈");  //3.顺序需要一致:可以使用”参数:值“的方式,这种方式术语是--命名参数。(PS:普通的参数传递,术语是:【位置参数】-->就是说每个实参,必须一一形参的位置)  GetName(lastName: ); //正确调用方式  GetName(age:, lastName: "fangsheng", firstName: "cao" ); //正确的调用方式,可以不必按照方法参数的顺序调用方法。【命名参数的方式调用】 //GetName(lastName: "fangsheng", firstName: "cao",23);//错误调用方法的例子:命名参数必须出现在所有指定的固定参数后面。【//如果某个参数值,使用了命名参数的方式,那么后面所有的参数,也必须使用这种格式。】  }  #region 3.顺序需要一致:可以使用”参数:值“的方式,这种方式术语是--命名参数。(PS:普通的参数传递,术语是:【位置参数】-->就是说每个实参,必须一一形参的位置) /// <summary> /// 3.顺序需要一致:可以使用”参数:值“的方式,这种方式术语是--命名参数。(PS:普通的参数传递,术语是:【位置参数】-->就是说每个实参,必须一一形参的位置) /// </summary> /// <param name="firstName"></param> /// <param name="lastName"></param> static void GetName(string firstName, string lastName, int age){  } #endregion  #region 2.数量需要一致:(params,还可以有默认值)---【反例】 /// <summary> ///2. 参数数组,数量可以随便传 /// </summary> /// <param name="name"></param> /// <param name="age"></param> /// <param name="intParamsArray"></param> static void GetSameParams(string name, int age, params int[] intParamsArray){  }  #endregion  #region 可选参数必须在所有必选参数后【错误范例】 /// <summary> /// 可选参数必须在所有必选参数后【错误范例】 /// </summary> /// <param name="age"></param> /// <param name="name"></param> //static void Show(int age = 30, string name) //可选参数必须在所有必选参数后【错误范例】 //{  //} #endregion  #region 2.数量需要一致:(params,还可以有默认值)---【反例】 /// <summary> /// 2.数量需要一致:(params,还可以有默认值)---【反例】 /// </summary> /// <param name="age"></param> /// <param name="name"></param> , string name = "") {  } #endregion  #region 1.类型需要一致:(double-->float--int 子类可以替换父类)---【反例】  #region double-->--int /// <summary> /// double-->--int /// </summary> /// <returns></returns> static double GetValue() { ; return a;//返回int类型的数 } #endregion  #region double-->float /// <summary> /// double-->float /// </summary> /// <param name="num"></param> /// <returns></returns> static double GetValue(int num){ float a = 1.34F; return a; } #endregion  #region 返回值为父类,可以返回子类 /// <summary> /// 返回值为父类,可以返回子类 /// </summary> /// <returns></returns> static A GetValue1(){ B b = new B(); return b; } #endregion  } #region 父子类测试 class A { int member; } /// <summary> /// B继承A /// </summary> class B : A {  } #endregion  #endregion }

以上是关于C#中方法的调用的主要内容,如果未能解决你的问题,请参考以下文章

根据父活动在片段中调用不同的方法

XSS:如何从 C# 中的字符串中删除 JS 片段?

Sleep() 方法后的代码片段没有被执行

记录C#常用的代码片段

C# 最有用的(自定义)代码片段是啥? [关闭]

此 Canon SDK C++ 代码片段的等效 C# 代码是啥?