机器人学导论第三版课后习题答案解析
在上一节中,读者可能想知道为什么需要利用函数交换数据。原因是C#中的变量仅能从代码的本地作用域访问。给定的变量有一个作用域,访问该变量要通过这个作用域来实现。变量的作用域是一个重要的主题,好用一个示例加以说明。
下面的示例将演示变量在一个作用域中定义,但试图在另一个作用域中使用的情形。试一试:变量的作用域
(1)对Ch06Ex01中的Program.cs进行如下修改:
class Program {
static void Write() {
Console.WriteLine("myString = {0}", myString);
}
static void Main(string[] args) {
string myString = "String defined in Main()";
Write();
Console.ReadKey();
}
}
(2)编译代码,注意显示在任务列表中的错误和警告:
当前上下文中不存在名称“myString”【The name 'myString' does not exist in the current context】
变量“myString”已赋值,但其值从未使用过【The variable 'myString' is assigned but its value is never used】
示例的说明什么地方出错了?不能在Write()函数中访问在应用程序主体(Main()函数)中定义的变量myString。原因是变量是有作用域的,在这个作用域中,变量才是有效的。这个作用域包括定义变量的代码块和直接嵌套在其中的代码块。函数中的代码块与调用它们的代码块是不同的。在Write()中,没有定义myString,在Main()中定义的myString则超出了作用域——它只能在Main()中使用。
实际上,在Write()中可以有一个完全独立的变量myString,修改代码如下所示:
class Program {
static void Write() {
string myString = "String defined in Write()";
Console.WriteLine("myString = {0}", myString);
}
static void Main(string[] args) {
string myString = "String defined in Main()";
Write();
Console.ReadKey();
}
}
想了解更多关于C#编程的知识?看看C#源码大全,这里有丰富的示例和详细的解释,助你更快掌握这门语言。如果你对C++也感兴趣,可以参考非常强大c#绘图类库源码或者C++破解工具。这些资源不仅适用于新手,也能满足进阶程序员的需求!
如果你还在为找不到好的C和C++资料发愁,不妨试试这些链接:C语言讲义,C和C指针,以及C和C++代码精粹。你会发现编程世界其实没有那么复杂!
现在,回到我们的示例,仔细观察变量的作用域在实际应用中的表现,是不是有种豁然开朗的感觉呢?理解了这些概念,你就能更好地控制代码的执行,编写出更高效、更可靠的程序。学编程的乐趣就在于此,每一次小小的突破,都能让你在技术的海洋中遨游得更远!