C#中变量的作用域变量和公共变量有什么不同
本文关键字:变量 什么 作用域 | 更新日期: 2023-09-27 17:58:22
C中变量的作用域变量和公共变量有什么不同#您可以在程序中的四个不同位置声明变量变量的"范围"是什么意思?将变量的范围想象为"特定变量的范围是程序源代码中编译器识别该变量的范围"。
如果我对您的问题的理解是正确的,那么您希望将范围(本地、实例、静态等)与可见性(公共、私有、受保护、内部)进行对比。这两个概念几乎是独立的(我说"几乎",因为局部范围的变量不具有可见性)。它们一起可以让您控制变量的生存期和可访问性。
作用域控制变量的生存期,使您可以确定变量何时存在以及何时不可用。当然,作用域约束"程序源代码中编译器识别变量的范围"。然而,被编译器识别是不足以让程序访问变量的:如果编译器将变量识别为私有变量,它就不会让程序在变量可见的上下文之外访问它(例如,从另一个类的方法)。
从本质上讲,范围和可见性控制着可访问性的两个不同方面,这两个方面共同决定了程序源代码中试图访问变量的代码可以使用该变量的范围
变量的作用域是您可以使用该名称并谈论相同事情的时间。
如果它在一个函数中,那么看看{ }
s。每当你进入{ }
时,你就会进入一个更深的范围-在{ }
内部声明的变量不能从它的外部引用,但在它外部声明的变量可以从它的内部引用。事实上,你不需要If、for等-你可以在C#中随时声明一个新的{ }
,例如,你可以做这样的事情:
{
int a = foo();
int b = bar();
}
{
int a = foo();
int b = bar();
}
并且重新声明是有效的。
类的"作用域"实际上是一种完全不同的东西,称为可见性。public
表示如果您在该文件中或using
中,则可以引用它。protected
表示只有当您是该类(或其子类)的实例时,才能访问它。private
意味着只有当您是该类(而不是其子类)的实例时,才能访问它。internal
类似于public,只是你也必须在同一个程序集中——所以如果你编译为.dll,那么你就不能从其他地方引用内部变量。然而,无论它是公共的/私有的/内部的/受保护的,都不能控制变量的寿命——它的范围。
这样的东西可以帮助您:C#可变范围
基本上有3个作用域:类级、方法级、嵌套级。不要与Access修饰符混淆:public、internal、protected、private。
如果使用Static关键字声明局部变量,则其生存期将长于声明该变量的过程的执行时间。如果过程在模块内,那么只要应用程序继续运行,静态变量就会一直存在。
静态变量
寿命