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("cfs",);
GetSameParams("cfs", ,,,); //2.数量需要一致:还可以有默认值)---【反例】
ShowInfo();
ShowInfo(, "哈哈"); //3.顺序需要一致:可以使用”参数:值“的方式,这种方式术语是--命名参数。(PS:普通的参数传递,术语是:【位置参数】-->就是说每个实参,必须一一形参的位置) GetName(lastName: "fangsheng", firstName: "cao",age: ); //正确调用方式 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>
static void ShowInfo(int age = , string name = "")
{ }
#endregion #region 1.类型需要一致:(double-->float--int 子类可以替换父类)---【反例】 #region double-->--int
/// <summary>
/// double-->--int
/// </summary>
/// <returns></returns>
static double GetValue()
{
int a = ;
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#中方法的调用的更多相关文章

  1. 相同类中方法间调用时日志Aop失效处理

    本篇分享的内容是在相同类中方法间调用时Aop失效处理方案,该问题我看有很多文章描述了,不过大多是从事务角度分享的,本篇打算从日志aop方面分享(当然都是aop,失效和处理方案都是一样),以下都是基于s ...

  2. Spring service本类中方法互相调用事物失效问题

    简介 Spring事物利用的是AOP,动态代理采用CGLIB代理(默认,也可以用Proxy代理,但是Proxy代理效率低于CGLIB代理).故只要弄懂Spring的AOP实现,就知道为什么servic ...

  3. JAVA中方法的调用主要有以下几种

    JAVA中方法的调用主要有以下几种: 1.非静态方法 非静态方法就是没有 static 修饰的方法,对于非静态方法的调用,是通过对 象来调用的,表现形式如下. 对象名.方法() eg: public ...

  4. python__基础 : 多继承中方法的调用顺序 __mro__方法

    在多继承中,如果一个子类继承了两个平级的父类,而这两个父类有两个相同名字的方法,那么一般先继承谁,调用方法就调用先继承的那个父类的方法.如: class A: def test(self): prin ...

  5. @Transactional-同一个类中方法自调,调用方法事物失效

    问题分析 一个类中的方法调用另一个事物传播性为创建事物的方法,调用的方法事物失效? SpringAOP 代理的Service对象调用了其方法,这个方法再去调用这个Service中的其他方法是没有使用A ...

  6. android开发中关于继承activity类中方法的调用

    android开发中关于继承activity类中的函数,不能在其他类中调用其方法. MainActivity.java package com.example.testmain; import and ...

  7. testNG中方法的调用顺序

    今天在执行selnium的test case时,总是遇到空指针错误.但是以前也有run成功过,然后换了各种方法定位元素,都失败了,所以怀疑应该不是元素定位不到的问题,所以可能是method之间有依赖, ...

  8. Delphi动态事件深入分析(对象方法在调用的时候会传递一个隐含的Self指针,而该指针的值在EAX中。即左边第一个参数)

    Delphi动态事件深入分析 2009-2-7 作者:不得闲核心提示:本实验证明了在类中方法的调用时候,所有的方法都隐含了一个Self参数,并且该参数作为对象方法的第一个参数传递... 首先做一个空窗 ...

  9. ****Objective-C 中的方法的调用

    oc语言中采用特定的语言调用类或者实例(对象)的方法称为发送消息或者方法调用. oc中方法的调用有两种: 第一种: [类名或对象名 方法名]; [ClassOrInstance method]; [C ...

随机推荐

  1. 特征工程(Feature Enginnering)学习记要

     最近学习特征工程(Feature Enginnering)的相关技术,主要包含两块:特征选取(Feature Selection)和特征抓取(Feature Extraction).这里记录一些要点 ...

  2. 谢谢博客-园,让我不再有开源AYUI的想法

    第一次 第二次 教程不会在博客园上写了,具体的看我官网博客吧,谢谢大家了 ================= 我是个有素质的程序员 艹艹艹艹艹艹艹艹艹艹艹艹艹艹艹艹艹艹艹艹艹艹艹艹艹艹艹艹艹艹艹艹艹艹 ...

  3. windows下使用TortoiseGit代替Git命令行操作

    windows下使用TortoiseGit代替Git命令行操作 大家在使用svn的时候,都非常喜欢使用小乌龟,也就是TortoiseSVN:那么git也有小乌龟版本,即TortoiseGit. 1.安 ...

  4. linux shell脚本备份mysql数据库

    #!/bin/sh # 备份数据库 # Mysql 用户名密码 MYSQL_USER=root MYSQL_PASS=root BACKUP_DIR=/data/backup/mysql DATA_D ...

  5. ZipInputStream的用法

    package com.example.io; import java.awt.BorderLayout; import java.awt.EventQueue; import java.awt.ev ...

  6. 2014年黑金FPGA原创教程规划发布

    2014年已经过去快一半了,才出黑金2014年的FPGA原创教程规划,有点对不起大家了,哈哈! 俗话说,亡羊补牢,为时不晚,希望大家谅解啊,对于大家的支持,我们黑金人一向是感激.感恩.感谢! 下面大概 ...

  7. Hive Streaming 追加 ORC 文件

    1.概述 在存储业务数据的时候,随着业务的增长,Hive 表存储在 HDFS 的上的数据会随时间的增加而增加,而以 Text 文本格式存储在 HDFS 上,所消耗的容量资源巨大.那么,我们需要有一种方 ...

  8. Spring3系列9- Spring AOP——Advice

    Spring3系列9- Spring AOP——Advice Spring AOP即Aspect-oriented programming,面向切面编程,是作为面向对象编程的一种补充,专门用于处理系统 ...

  9. Castle.ActiveRecord (V3.0.0.130)

    为项目添加 Castle.ActiveRecord 的引用: 安装成功后,查看项目的引用如图: 配置文件 App.Config (MySQL) <?xml version="1.0&q ...

  10. Android中AutoCompleteTextView的使用

    1.http://blog.csdn.net/FX_SKY/article/details/9326129 此博客讲解了auto组件如何使用baseAdapter来扩展功能,推荐参照此博客写demo ...