全局变量,局部变量,和使用ref
2008-06-12 22:18
190 查看
class Program
{
static void showDouble(ref int val)
{
val *= 2;
Console.WriteLine("Val double = {0}", val);
}
static void Main(string[] args)
{
int val = 5;
Console.WriteLine("val = {0}", val);
showDouble(ref val);
Console.WriteLine("val = {0}", val);
}
}
result:
val = 5
val double = 10
val = 10
#########################################################################################################
class Program
{
static int val;
static void showDouble(int val)
{
val *= 2;
Console.WriteLine("Val double = {0}", val);
}
static void Main(string[] args)
{
val = 5;
Console.WriteLine("val = {0}", val);
showDouble(val);
Console.WriteLine("val = {0}", val);
}
}
result:
val = 5
val double = 10
val = 5 可以理解成全局变量val的值没有改变,ShowDouble里定义的val接受了全局变量val的值传递,所以改变的只有ShowDouble里定义的局部变量val。
#########################################################################################################
class Program
{
static int val;
static void showDouble(ref int val)
{
val *= 2;
Console.WriteLine("Val double = {0}", val);
}
static void Main(string[] args)
{
val = 5;
Console.WriteLine("val = {0}", val);
showDouble(ref val);
Console.WriteLine("val = {0}", val);
}
}
result:
val = 5
val double = 10
val = 10 ShowDouble函数的参数使用的ref关键字,所以是引用传递,所以全局变量val的值也改变了。
#########################################################################################################
class Program
{
static int val;
static void showDouble()
{
val *= 2;
Console.WriteLine("Val double = {0}", val);
}
static void Main(string[] args)
{
val = 5;
Console.WriteLine("val = {0}", val);
showDouble();
Console.WriteLine("val = {0}", val);
}
}
result:
val = 5
val double = 10
val = 10 在函数ShowDouble里没有定义val,所以函数使用的是全局变量val,在函数内改变全局变量val的值后,在函数外它的值也改变了
#########################################################################################################
class Program
{
static int val;
static void showDouble(int val)
{
val *= 2;
Console.WriteLine("Val double = {0}", val);
}
static void Main(string[] args)
{
int val = 5;
Console.WriteLine("val = {0}", val);
showDouble(val);
Console.WriteLine("val = {0}", val);
}
}
result:
val = 5
val double = 10
val = 5 程序提示"Program.val" is never used.在Main中定义的局部变量val屏蔽了全局变量val。
#########################################################################################################
#########################################################################################################
class Program
{
static int val;
static void showDouble()
{
val *= 2;
Console.WriteLine("Val double = {0}", val);
}
static void Main(string[] args)
{
int val = 5;
Console.WriteLine("val = {0}", val);
showDouble();
Console.WriteLine("val = {0}", val);
}
}
result:
val = 5
val double = 0
val = 10 这里很有意思的,我觉得可以理解成在函数ShowDouble里由于没有定义val,所以在函数中使用的是全局变量,如果删掉static int val,程序就会报错,说函数中的val没有定义。函数外面的val使用的是局部函数int val = 5,这里因为有局部变量所以把全局变量屏蔽了。
{
static void showDouble(ref int val)
{
val *= 2;
Console.WriteLine("Val double = {0}", val);
}
static void Main(string[] args)
{
int val = 5;
Console.WriteLine("val = {0}", val);
showDouble(ref val);
Console.WriteLine("val = {0}", val);
}
}
result:
val = 5
val double = 10
val = 10
#########################################################################################################
class Program
{
static int val;
static void showDouble(int val)
{
val *= 2;
Console.WriteLine("Val double = {0}", val);
}
static void Main(string[] args)
{
val = 5;
Console.WriteLine("val = {0}", val);
showDouble(val);
Console.WriteLine("val = {0}", val);
}
}
result:
val = 5
val double = 10
val = 5 可以理解成全局变量val的值没有改变,ShowDouble里定义的val接受了全局变量val的值传递,所以改变的只有ShowDouble里定义的局部变量val。
#########################################################################################################
class Program
{
static int val;
static void showDouble(ref int val)
{
val *= 2;
Console.WriteLine("Val double = {0}", val);
}
static void Main(string[] args)
{
val = 5;
Console.WriteLine("val = {0}", val);
showDouble(ref val);
Console.WriteLine("val = {0}", val);
}
}
result:
val = 5
val double = 10
val = 10 ShowDouble函数的参数使用的ref关键字,所以是引用传递,所以全局变量val的值也改变了。
#########################################################################################################
class Program
{
static int val;
static void showDouble()
{
val *= 2;
Console.WriteLine("Val double = {0}", val);
}
static void Main(string[] args)
{
val = 5;
Console.WriteLine("val = {0}", val);
showDouble();
Console.WriteLine("val = {0}", val);
}
}
result:
val = 5
val double = 10
val = 10 在函数ShowDouble里没有定义val,所以函数使用的是全局变量val,在函数内改变全局变量val的值后,在函数外它的值也改变了
#########################################################################################################
class Program
{
static int val;
static void showDouble(int val)
{
val *= 2;
Console.WriteLine("Val double = {0}", val);
}
static void Main(string[] args)
{
int val = 5;
Console.WriteLine("val = {0}", val);
showDouble(val);
Console.WriteLine("val = {0}", val);
}
}
result:
val = 5
val double = 10
val = 5 程序提示"Program.val" is never used.在Main中定义的局部变量val屏蔽了全局变量val。
#########################################################################################################
#########################################################################################################
class Program
{
static int val;
static void showDouble()
{
val *= 2;
Console.WriteLine("Val double = {0}", val);
}
static void Main(string[] args)
{
int val = 5;
Console.WriteLine("val = {0}", val);
showDouble();
Console.WriteLine("val = {0}", val);
}
}
result:
val = 5
val double = 0
val = 10 这里很有意思的,我觉得可以理解成在函数ShowDouble里由于没有定义val,所以在函数中使用的是全局变量,如果删掉static int val,程序就会报错,说函数中的val没有定义。函数外面的val使用的是局部函数int val = 5,这里因为有局部变量所以把全局变量屏蔽了。
相关文章推荐
- 全局变量,局部变量,和使用ref
- 使用Lua 局部变量来优化性能,同时比较局部变量和全局变量
- jsp的局部变量和全局变量的使用小记
- 关于在多线程中,局部变量和全局变量的使用。
- effective javascript(五)——变量作用域(尽量少用全局变量,尽量使用局部变量)
- c语言全局变量与局部变量(当变量重名时)的使用情况
- 浅谈全局变量与局部变量的使用方式
- 多个文件使用同一全局变量(未初始化) 以及局部变量重复定义
- C++ 全局变量、静态全局变量、局部变量、静态局部变量使用归类
- OC-局部变量和全局变量、结构体、预处理指令以及关键字的基本使用
- 全局变量 局部变量和关键字static和extern的使用
- 关于DSP中全局变量与局部变量的使用
- 关于DSP中全局变量与局部变量的使用
- 全局变量与局部变量的使用【原创】
- Android中全局变量与局部变量的使用总结
- 关于DSP中全局变量与局部变量的使用
- 关于DSP中全局变量与局部变量的使用
- 关于DSP中全局变量与局部变量的使用
- 函数内怎么使用局部变量和全局变量
- Python: 全局变量 & 局部变量的使用