通过我所读过的内容,我确信我在进入WPF时经历了大多数过程。我来自嵌入式即时通讯挣扎。
采取这些例子
int foo; //
int foo { get; set; } //c#
public int foo{ get => foo; set => foo= value; }
private int _foo;
public int foo{ get => _foo; set => _foo= value; }
有人,请给我一个明确的答案,说明为什么所有的吸气剂和制定者
- 它只是一个视觉工作室,它的自动完成设置?
- 是因为线程和foo在幕后被标记为不稳定吗?
- 或者是其他事情。
跟进
对于任何学习和挣扎于数据绑定的人来说," 580"回复"绑定"到目前为止,我遇到过最好的例子,让你了解语法。我也遇到了#34; ReSharper"对于visual studio,它使用正确的方法让您了解错误和正确的修复方法。使用示例和resharper我在3小时内比上周学到的更多。
答案 0 :(得分:4)
这种情况下的get和set语法表示C#中的属性。属性不是特定于WPF,Visual Studio,线程或volatile关键字。属性只是C#语言的一个构造。 MSDN - Properties
如果你来自嵌入式世界,我假设你有一个C / C ++背景。 C#中的普通旧标准成员变量称为字段。属性表示成员变量,有点扭曲。
关于为何在任何地方找到get和set关键字的明确答案是由于它们在属性中的使用。属性被广泛使用,因为它们通常被认为是在大多数情况下使用字段的更好的实践。它们允许更细粒度的访问控制。我建议您阅读Jon Skeet的这篇文章C# In Depth - Why Properties Matter
属性与字段
现在,对于某些细节,属性与字段的不同之处在于,它们可以定义每次发生读取(get)或修改(set)时执行的其他功能。该功能隐式发生,使得该财产的消费者甚至可能不知道它。这个抽象层是为什么属性被认为比字段更有价值的一个原因。
虽然不一直是这种情况,但属性通常会封装私有字段,传统上属于同一类型。当使用标准语法{ get; set; }
时,编译器将自动生成与属性相同类型的私有字段。这称为自动属性。例如:
public string Title { get; set;}
将由C#编译器转换为以下内容。
private string title;
public string Title
{
get
{
return title;
}
set
{
title = value;
}
}
如果您自己手动/明确定义私有字段,则该字段称为支持字段,有时也称为支持商店。你的两个例子#3和#4代表了这一点,其中#4的表现更为明显。
如前所述,并非所有属性都需要封装字段。以下是仅返回字符串文字的属性示例。
public string RandomText { get { return "Foo"; } }
现在进入你的例子:
<强>装订强>
有用的数据绑定阅读。 MSDN - Data Binding