gpt4 book ai didi

c# - 为什么访问器必须比属性更严格?

转载 作者:行者123 更新时间:2023-11-30 22:18:14 26 4
gpt4 key购买 nike

我有这个代码:

public string foo { get; set; }

现在,我将其解释为我的对象有一个名为 foo 的公共(public)属性,并且它的访问器都是公共(public)的。如果我这样写:

private string foo { get; set; }

我将其解释为我的对象有一个名为 foo 的私有(private)属性,并且它的访问器都是私有(private)的。我了解将特性本身设为私有(private)。我不明白的是为什么访问者必须更严格?如果我写:

private string foo { public get; public set; }

我解释说我的对象有一个名为 foo 的私有(private)属性,并且它的访问器都是公共(public)的,这是我想要的行为。我想要具有公共(public)访问器的私有(private)属性(property)。我的意思是,如果我必须编写 Get/Set 方法,我会的。但我只是对为什么会这样感到困惑。

最佳答案

一个属性实际上(在水下)无非是两种方法:

public string foo { get; set; }

将转化为:

public string get_foo() { ... }
public void set_foo(string value) { ... }

这些方法只能有一个访问修饰符,不能是两个的组合。

如果我没记错的话,C#v1 不支持 getter 和 setter 的访问修饰符。该属性有一个访问修饰符,用于两个函数。

在 v2 中,可以“覆盖”getter/setter 对之一,这样就可以覆盖“其他”函数。重写 getters/setters 是没有用的,因为那样会使属性访问修饰符变得无用。

在我看来,为什么 getter/setter 的访问修饰符更具限制性,这与更容易实现始终具有(隐式公共(public))属性的接口(interface)有关。

有关更多信息,请阅读:http://msdn.microsoft.com/en-us/library/75e8y5dd(v=vs.80).aspx

关于c# - 为什么访问器必须比属性更严格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16201561/

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