C#中被调用方法、调用方法定义及调用方类实例语法位置咨询
问题1:被调用方法(called method)和调用方法(calling method)分别指什么?
- 调用方法(calling method):主动发起方法调用的方法,是触发调用的主体。
- 被调用方法(called method):被调用方法发起调用的目标方法,是接收调用并执行逻辑的方法。
简单来说:如果方法A里写了MethodB();,那A就是调用方法,B就是被调用方法。
问题2:调用方法里的类实例在语法中的位置?
调用方法中的类实例,是你在调用方法的作用域内创建(或已存在)的引用类型变量,它存储的是堆上对象的内存地址。当你把这个变量作为参数传给被调用方法时,被调用方法的参数会得到这个地址的副本,两者指向同一个堆对象。
完整示例代码
using System; // 定义一个引用类型的类 public class Book { public string Title { get; set; } } class Demo { // 调用方法:Main方法发起调用 static void Main() { // 这里的myBook就是调用方法中的类实例,位于Main方法的局部作用域内 Book myBook = new Book { Title = "C#入门" }; Console.WriteLine("调用方法修改前的书名:" + myBook.Title); // 将myBook作为参数传递给被调用方法 UpdateBookTitle(myBook); Console.WriteLine("调用方法修改后的书名:" + myBook.Title); } // 被调用方法:被Main调用的方法 static void UpdateBookTitle(Book bookParam) { // bookParam是被调用方法的参数,存储了myBook地址的副本,指向同一个Book对象 bookParam.Title = "C#进阶"; } }
示例说明
在调用方法Main中,Book myBook = new Book { Title = "C#入门" };这行代码定义的myBook变量,就是文档里说的「调用方法中的类实例」。它在调用方法的局部代码块里,作为参数传递给UpdateBookTitle后,被调用方法的bookParam参数拿到的是myBook的地址副本,所以修改bookParam.Title会直接改变原myBook指向的对象内容,最终输出结果为:
调用方法修改前的书名:C#入门 调用方法修改后的书名:C#进阶
内容的提问来源于stack exchange,提问作者nishko
相关产品推荐
相关产品推荐

