自动属性
Automatic properties
我想知道当您创建 Automatic 属性
并在 main()
方法中调用 set
以获得随机值,value
存储在哪里?
如本例所示:
class Program
{
static void Main(string[] args)
{
Example W = new Example();
W.Num = 10;
Console.WriteLine("{0}", W.Num);
Console.WriteLine("{0}", W.getNum());
}
}
class Example
{
private int num;
public int Num { get; set; }
public int getNum() { return num; }
}
为什么输出是:
10
0
因为您要返回 num
,而不是 Num
。而num
没有初始化,所以这个值为0。
这里没什么异常。
当你打电话时
Example W = new Example();
然后最初 num = 0 和 Num = 0;
您分配的是 Num,而不是 num。
num
在你的 Example
class 是多余的。
如果您在将自动 属性 初始化器添加到 c# 之前编写此代码,它看起来像这样:
private int num;
public int Num
{
get{ return num;}
set{ num = value;}
}
写publicpublic int Num { get; set; }
在幕后本质上是一样的。无需实现 getNum()
(如 Java),因为这等同于 int a = w.Num;
。
当 getter 或 setter 不需要额外的逻辑时,自动实现的属性使代码更清晰。编译器实际上为自动实现的 属性 生成了一个支持字段,但是这个支持字段在您的代码中是不可见的。
在您的示例中,num
字段与 Num
属性 之间没有任何联系,因此没有理由更改 num
。
如果使用 new
关键字,您将创建新实例 class 并重新创建所有对象。
例如;
class Program
{
static void Main(string[] args)
{
Example W = new Example();
W.Num = 10;
Example W1 = new Example();
Console.WriteLine("{0}", W.Num); //10
Console.WriteLine("{0}", W1.Num); //0
}
}
这只是您的答案的信息;你返回不同的变量。你没有设置它们。
我想知道当您创建 Automatic 属性
并在 main()
方法中调用 set
以获得随机值,value
存储在哪里?
如本例所示:
class Program
{
static void Main(string[] args)
{
Example W = new Example();
W.Num = 10;
Console.WriteLine("{0}", W.Num);
Console.WriteLine("{0}", W.getNum());
}
}
class Example
{
private int num;
public int Num { get; set; }
public int getNum() { return num; }
}
为什么输出是:
10
0
因为您要返回 num
,而不是 Num
。而num
没有初始化,所以这个值为0。
这里没什么异常。
当你打电话时
Example W = new Example();
然后最初 num = 0 和 Num = 0;
您分配的是 Num,而不是 num。
num
在你的 Example
class 是多余的。
如果您在将自动 属性 初始化器添加到 c# 之前编写此代码,它看起来像这样:
private int num;
public int Num
{
get{ return num;}
set{ num = value;}
}
写publicpublic int Num { get; set; }
在幕后本质上是一样的。无需实现 getNum()
(如 Java),因为这等同于 int a = w.Num;
。
当 getter 或 setter 不需要额外的逻辑时,自动实现的属性使代码更清晰。编译器实际上为自动实现的 属性 生成了一个支持字段,但是这个支持字段在您的代码中是不可见的。
在您的示例中,num
字段与 Num
属性 之间没有任何联系,因此没有理由更改 num
。
如果使用 new
关键字,您将创建新实例 class 并重新创建所有对象。
例如;
class Program
{
static void Main(string[] args)
{
Example W = new Example();
W.Num = 10;
Example W1 = new Example();
Console.WriteLine("{0}", W.Num); //10
Console.WriteLine("{0}", W1.Num); //0
}
}
这只是您的答案的信息;你返回不同的变量。你没有设置它们。