C#中变量的范围变量和公共变量有什么不同?

时间:2013-02-09 12:04:33

标签: c#

C#中变量的范围变量和公共变量之间有什么不同 您可以在程序中的四个不同位置声明变量 变量的“范围”是什么意思?将变量的范围视为“特定变量的范围是程序源代码中的范围,编译器可以识别该变量”。

4 个答案:

答案 0 :(得分:4)

如果我对您的问题的解读是正确的,那么您希望将范围(本地,实例,静态等)与可见性(公共,私有,受保护,内部)进行对比。这两个概念几乎是独立的(我说“差不多”,因为局部范围的变量没有可见性)。它们可以让您控制变量的生命周期和可访问性。

范围控制变量的生命周期,让您确定变量何时存在以及何时变得不可用。当然,范围限制“程序源代码中编译器识别该变量的范围”。但是,编译器识别并不足以让程序访问变量:如果编译器将变量识别为私有,则不允许程序在变量可见的上下文之外访问它(例如,从另一个变量的方法中访问它)类)。

本质上,范围和可见性控制可访问性的两个不同方面,它们共同决定程序源代码中的范围,尝试访问该代码的代码可以使用该范围。

答案 1 :(得分:2)

变量的范围是你可以使用该名称多长时间并谈论同样的事情。

如果它在函数中,请查看{ }。每当你进入{ }进入更深的范围时 - 在{ }内部声明的变量不能从它外部引用,但在它之外声明的变量可以从内部引用它。事实上,你不需要if,for等等 - 你可以随时在C#中声明一个新的{ },所以你可以这样做:

{
 int a = foo();
 int b = bar();
}
{
 int a = foo();
 int b = bar();
}

并且重新声明有效。

类的“范围”实际上是一种完全不同的称为可见性的东西。 public表示如果您在此文件或using此文件中,则可以引用它。 protected表示只有在您是该类(或其子类)的实例时才能访问它。 private表示只有在您是该类的实例(而不是其子类)时才能访问它。 internal就像公共一样,除了你也必须在同一个程序集中 - 所以如果你编译为.dll,那么你就不能从其他地方引用内部变量。但是,无论是公共/私人/内部/受保护,都无法控制变量的持续时间 - 范围。

答案 2 :(得分:0)

这样的东西可以帮助你: C# Variable scopes

基本上,有3个范围:类级别,方法级别,嵌套级别。不要与Access modifiers混淆:public,internal,protected,private。

答案 3 :(得分:-1)

如果使用Static关键字声明局部变量,则其生命周期长于声明它的过程的执行时间。如果过程在模块内部,只要应用程序继续运行,静态变量就会存活。

Static variables

Lifetime