这是一个有趣的小故事,我无法在网上找到。这个想法是,如果你有一个属性,如int a {get;组;它可以自己设定。
如何使用{get {} set {}}?
将属性设置为int集合内部发生了什么;?
这是我尝试做的事情:
public string Symbol { get { return Symbol; } set { Symbol = value; NotifyPropertyChangedEvent("Symbol"); } }
但它显然会创建一个 Stack Overflow ,因为它本质上是一遍又一遍地调用自己。
而且我不想创建10-20个私有变量来与我的属性一起工作,我想知道集合中发生了什么;。
谢谢。
答案 0 :(得分:10)
set;
只会创建一个您看不到的私有变量。抱歉,你需要那些10-20个私有变量。
答案 1 :(得分:2)
您必须创建私有变量。
不幸的是,这是你在这里遇到的具体情况的唯一方法。
答案 2 :(得分:2)
它在编译时会为您生成一个支持字段。您无法通过intellisense访问它,因为它尚未创建。它等同于以下'尚未生成'_a'。
private int _a;
public int a
{
get { return _a; }
set { _a = value; }
}
但是,您可以简单地从类内部设置属性本身。
public int a { get; set; }
a = ...;
此外,如果您只想在内部设置修改器,可以在get和set上设置修改器;
public int a { get; private set; }
答案 3 :(得分:1)
如果您需要自定义逻辑,则需要自己提供支持字段:
private string symbol;
public string Symbol
{
get { return symbol; }
set { symbol = value; NotifyPropertyChangedEvent("Symbol"); }
}
而且我不想创建10-20个私有变量来与我的属性一起工作,我想知道集合中发生了什么;。
使用automaticaly属性(即:public string Symbol { get; set; }
),编译器会自动创建支持字段。但是,如果不自行管理支持字段,就无法引入逻辑(即:提升事件)。