首页 > 编程语言 >C#中的方法

C#中的方法

时间:2022-10-13 04:11:05浏览次数:34  
标签:Console WriteLine C# sun Pro 方法 str ref

普通方法的定义:无参无返回值。

void sun()
{
    Console.WriteLine("这是一个函数,也叫一个方法(无参无返回值)");
}
sun(); //在同一个类中,不需要实例化,即可直接调用,这种叫函数调用。
Pro p = new Pro();
p.sun();//类外方法调用,其实这里也是一个类,C#只有方法没有函数,也可以说函数就是方法。

class Pro 
{
    public void sun() { Console.WriteLine("Python有这样一句话:类中定义叫方法,类外定义叫函数。"); }
}

有参有返回值:另外【有参无返回值,无参有返回值】这两种不在做演示

Pro p = new Pro();
string s = p.sun("void空,无返回值;改string就是返回一个字符串,带返回值的方法必须return");//实参可以不用传值,返回默认值实参
Console.WriteLine(s);  
class Pro 
{
    public string sun(string str, int i=0) //str是形参,i是实参,实参必须定义在行参后面
    { 
        return str + i; //返回的是字符串string
    }
}

一、方法参数传递关键字:ref,out,params

栈:存放值类型会被初始化;堆:存放引用类型的不会被初始化数据。
将值类型改为引用类型传递:【ref关键字和out关键字】,两个意思是一样的只是使用方法不一样。
ref和out的区别

//ref:传递前必须初始化赋值,有进有出
int a = 10;
ChangeNum(ref a);//方法也需要有ref关键字
Console.WriteLine("\n关键字ref下的a = {0}", a);//此时a = 11  

static void ChangeNum(ref int num)//传参时也需要有ref关键字
{
    num++;//ref,在方法体中可以不对变量赋值,返回的就是初始化的值,不会报错。
}

//out:传递前不需要赋值,只出不进。
int i;
ChangeNum2(out i);
Console.WriteLine("\n关键字out下的i = {0}", i);

static void ChangeNum2(out int num)
{
    num = 111; //out规定:方法体返回前必须给变量赋值。否则会报错。
}
params多参数传递:不能与ref、out修饰同一个参数,不能一起使用,且params必须定义最后一个参数,当数组传递。
Testt("params多参数传递,", 99, 88, 77, 44, 55, 66);//params会自动识别为同类型数据,这里自动识别为一个数组,或者直接传一个数组也可以

static void Testt(string str, params int[] a)//params关键字必须是最后一个参数,不要给数组定义长度。
{
    int sum = 0;
    foreach (int i in a) { sum += i; }
    Console.WriteLine("{0}这个班的总成绩是:{1}", str, sum);
}

二、方法重载

方法名相同,参数不同。

Pro p = new Pro();
p.sun();
string s = p.sun("只要方法名相同,参数不同都叫方法重载,跟有无返回值无关");
Console.WriteLine(s);
class Pro
{
    public void sun()
    {
        Console.WriteLine("方法重载");
    }
    public string sun(string str)
    {
        return str;
    }
}

三、构造方法

与类同名的方法,不能有返回值,可以重载

Pro p = new Pro();//默认无参构造实例化,调用时自动运行
Pro p2 = new Pro("构成方法用于传递初始化数据");
Console.WriteLine(p2.str);

class Pro
{
    public Pro()
    {
        Console.WriteLine("每个类默认自带无参构造,当定义了有参后,隐藏的无参构造就消失,代码需要重新写上无参才生效。");
    }
    public Pro( string str1) //str1只作用方法体内,str作用于整个类
    {
        this.str = str1; //this表示当前类
    }
    public string str ="";//字段
}

四、回调函数

相当于循环,方法掉用方法本身,自己调用自己。

sun();

void sun()
{
    Console.WriteLine("没有条件判断,直接回调就是死循环");
    sun();//自己调用自己
}

 

标签:Console,WriteLine,C#,sun,Pro,方法,str,ref
From: https://www.cnblogs.com/longxinyv/p/16786708.html

相关文章

  • CentOS 7.9 安装 Consul_1.9.14
    一、CentOS7.9安装Consul_1.9.14地址https://developer.hashicorp.com/consulhttps://github.com/hashicorp/consul wget下载wgethttps://releases.hashic......
  • SynchronousQueue详解
    SynchronousQueue介绍【1】SynchronousQueue是一个没有数据缓冲的BlockingQueue,生产者线程对其的插入操作put必须等待消费者的移除操作take。 ......
  • [翻译] 关于UE的C++
    最近开始学习虚幻引擎使用C++来开发所以看了眼社区上面的一篇文章,就借助翻译软件翻译下来看看。UnrealC++学习“UnrealC++”可能比你想象的要容易得多,它已经接近自定......
  • goland mac 快捷键
    个人比较常用command+O查找类command+7查看当前文件的所有函数controller+G选中当前单词command+E打开最近更改的文件option+up/down代码块选......
  • [翻译] Unreal C++集成开发环境的选择与准备
    Choosing&PreparingIntegratedDevelopmentEnvironmentforUnrealC++要高效地使用UnrealC++,您需要做些什么?目前,虚拟引擎支持的集成开发环境很少。Rider虚幻引......
  • CentOS创建用户并追加管理员权限
    sudouseradd-m${用户名}#添加用户sudouseradd-mwork#添加work账户sudopasswd${用户名}#更改密码sudo......
  • Excel中的VLOOKUP函数
    VLOOKUP函数是Excel中的一个纵向查找函数,功能是按列查找,最终返回该列所需查询序列所对应的值。该函数的语法规则如下:VLOOKUP(lookup_value,table_array,col_index_nu......
  • Luogu P3469 [POI2008]BLO-Blockade
    [P3469POI2008]BLO-Blockade-洛谷|计算机科学教育新生态(luogu.com.cn)图\(G\)本身联通。删除\(u\)的连边后会形成\(k\ge2\)个连通块(至少会把\(u\)隔离出......
  • CentOS 7.9 安装 kafka_2.13
    一、CentOS7.9安装kafka_2.13地址https://kafka.apache.org/downloads.html 二、安装准备1安装JDK在安装kafka之前必须先安装JDK和zookeeper,如何安装JDK,可......
  • 2022.10.13实现callable接口
    实现callable接口(了解即可)实现callable接口,需要返回值类型重写call方法,需要抛出异常创建目标对象创建执行服务:ExecutorServiceser=Executor.newFixedThread......