我想知道当我在下面指定变量“temp”时会创建吗?
public class tempClass
{
public string prop_temp
{
get
{
string temp = "temp";
return temp;//When is the variable created ?
}
}
}
static void Main()
{
tempClass x = new tempClass(); //Is the variable created now?;
string b = x.prop_temp;//Or now ?
}
答案 0 :(得分:4)
在这种情况下,变量是在访问属性时创建的,而不是在创建类时创建的。
属性获取者真的是"简写"对于一种方法。因此,您的temp
变量就像方法中的任何其他局部变量一样,并且在该方法运行之前不存在。
答案 1 :(得分:0)
当然
string b = x.prop_temp;//Or now ?
是否创建了变量temp
。检查您在prop_temp
属性中声明变量的位置。因此,当您致电prop_temp
时会创建它。
答案 2 :(得分:0)
我认为你把变量与它指向的项目混淆了。变量只是代码构造或指针,具体取决于您如何看待它。代码中的变量是“temp”,“b”和“x”。变量“temp”将由编译器优化,并且永远不存在。我认为你问的是什么时候“temp”表示的对象被创建了。该对象位于已编译的代码中,并在代码运行时存在。这是因为它是一个字符串,字符串是不可变的。如果对象是一个类,那么当你调用该方法时,它确实会被创建(对象,而不是变量)。