C# 获取/设置语法用法

标签 c# syntax properties

这些是 Person 类的声明。

protected int ID { get; set; }
protected string Title { get; set; }
protected string Description { get; set; }
protected TimeSpan jobLength { get; set; }

如何使用 get/set?在 main 中,我实例化了一个

Person Tom = new Person();

Tom.set/get是怎么实现的??

我习惯于使用 C++ 风格编写 int getAge() 和 void setAge() 函数。但是在 C# 中有处理 get 和 set 的快捷方式吗?

最佳答案

假设您可以访问它们(您声明的属性是 protected),您可以像这样使用它们:

Person tom = new Person();
tom.Title = "A title";
string hisTitle = tom.Title;

这些是 properties .它们基本上是一对具有适当元数据的 getter/setter 方法(尽管您可以只有一个 getter 或一个 setter)。您给出的示例是自动实现的属性,其中编译器正在添加支持字段。不过,您可以自己编写代码。例如,您声明的 Title 属性如下:

private string title; // Backing field
protected string Title
{
    get { return title; }  // Getter
    set { title = value; } // Setter
}

... 除了为支持字段指定了一个“无法说出的名称”——您无法在 C# 代码中引用的名称。您被迫浏览属性本身。

您可以使属性的一部分比另一部分更受限制。例如,这是很常见的:

private string foo;
public string Foo
{
    get { return foo; }
    private set { foo = value; }
}

或作为自动实现的属性:

public string Foo { get; private set; }

这里的“getter”是公开的,而“setter”是私有(private)的。

关于C# 获取/设置语法用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4662442/

相关文章:

c# - 如何在 Xamarin Forms 中启用工具栏

javascript - C# webbrowser 控件 - google map javascript 问题

C 中的复合语句表达式

javascript - js 将两个函数传递给一个方法

php - 如何在 Eclipse 中验证 INI 文件格式

.net - 覆盖类/向 ListviewItem 添加属性 (vb.net)

c# - 具有附加连接条件的 NHibernate QueryOver .Left.JoinAlias

php - 如何安全地检索此对象的此属性?

java - 如何从文件加载 Java 枚举元素的值

c# - 使用任务计划程序并且用户已注销时如何找到 AutomationElement?