是否可以在被调用函数中声明变量,并且没有外部源可以更改此变量?例如:
private void SetVariable(){
privatetypevariable variable = "hello";
}
variable = "world"; //<-- doesnt work because it cannot access the variable 'variable' inside SetVariable()
如何访问上述方法范围之外的变量?
答案 0 :(得分:2)
不是在方法中声明变量,而是将其定义为类字段。然后你可以从课堂内的任何地方改变它。字段通常标记为私有,因此无法在课外进行更改。如果要在类外部公开它,请使用属性而不是公共类型。
private privatetype fielda;
void methodA(){
fielda = "hello";
}
void someOtherMethod()
{
fielda = fielda + " world";
}
答案 1 :(得分:0)
由于变量仅存在于其给定范围内,因此只要退出范围,变量就会丢失,这是不可能的。 要添加,您不能将可见性修饰符添加到方法
中声明的变量下面的代码不起作用,因为s只存在于methodA()的范围内,并在退出范围后立即丢失。
private void methodA(){
String s = "hello";
}
private void methodB(){
s = s + " world"; //even tho methodA created an s variable, it doesn't exist in the eyes of methodB
}
您可以执行以下操作:
class someClass{
private String s;
public someClass(){
s = "hello world";
}
public String getVariable(){ //you can read this variable, but you can't set it outside of this class.
return s;
}
}
答案 2 :(得分:0)
如果在函数内部指定变量,则其范围仅限于C#中的该函数。
示例1:
private void foo(string bar)
{
string snark = "123";
}
private void derk()
{
snark = "456";
}
示例1会导致编译错误。如果您的意思是在一个类中,请将该属性声明为readonly
,并且不能在它的初始构造函数之外进行更改。
示例2:
public class Lassy
{
private readonly string _collarColour;
public Lassy(string collarColour)
{
_collarColour = collarColour;
}
private void SetCollarColour(string newColour)
{
_collarColour = newColour;
}
}
示例2也会导致编译错误,因为您无法在其初始构造函数之外的类中分配readonly
属性。
要实现您的目标,请使用readonly
。