gpt4 book ai didi

c# - 在 C# 中寻找 getters/setters 的简短示例

转载 作者:IT王子 更新时间:2023-10-29 03:49:48 26 4
gpt4 key购买 nike

我无法理解 C# 语言中 getter 和 setter 的概念。在像 Objective-C 这样的语言中,它们似乎是系统不可或缺的一部分,但在 C# 中却并非如此(据我所知)。我已经阅读过书籍和文章,所以我的问题是,对于那些了解 C# 中的 getter 和 setter 的人,如果您向一个完全的初学者教授这个概念,您个人会使用什么示例(这将包括尽可能少的尽可能多的代码行)?

最佳答案

我认为一些代码将有助于说明什么是 setter 和 getter:

public class Foo
{
private string bar;

public string GetBar()
{
return bar;
}

public void SetBar(string value)
{
bar = value;
}
}

在这个例子中,我们有一个名为 bar 的类的私有(private)成员。 GetBar 和 SetBar 方法完全按照它们的名称进行操作 - 一个检索 bar 成员,另一个设置它的值。

在 c# 1.1 + 中你有属性。基本功能也是一样的:

public class Foo
{
private string bar;

public string Bar
{
get { return bar; }
set { bar = value; }
}
}

私有(private)成员bar在类外不可访问。然而公共(public)的“Bar”是,它有两个访问器——get,就像上面的例子“GetBar()”返回私有(private)成员,还有一个集合——对应于前面提到的 SetBar(string value) 方法示例。

从 C# 3.0 及更高版本开始,编译器已优化到这样的程度,即此类属性不需要将私有(private)成员作为其来源。编译器自动生成该类型的私有(private)成员并将其用作属性的来源。

public class Foo
{
public string Bar { get; set; }
}

代码显示的是一个自动属性,它有一个由编译器生成的私有(private)成员。您看不到私有(private)成员,但它在那里。这也引入了一些其他问题——主要是访问控制。在 C# 1.1 和 2.0 中,您可以省略属性的获取或设置部分:

public class Foo
{
private string bar;

public string Bar
{
get{ return bar; }
}
}

让您有机会限制其他对象如何与 Foo 类的“Bar”属性交互。从 C# 3.0 及更高版本开始 - 如果您选择使用自动属性,则必须按如下方式指定对属性的访问:

public class Foo
{
public string Bar { get; private set; }
}

这意味着只有类本身可以将 Bar 设置为某个值,但是任何人都可以读取 Bar 中的值。

关于c# - 在 C# 中寻找 getters/setters 的简短示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11159438/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com