gpt4 book ai didi

c# - 大写属性是否会在 C# 中自动创建小写私有(private)属性?

转载 作者:太空狗 更新时间:2023-10-29 22:30:08 41 4
gpt4 key购买 nike

拿这段代码:

public int Foo {get;set;}

相对于这个更完整的手动编写的代码:

private int x;
public int X
{
get { return x; }
set { x = value; }
}

在第一个示例中,编译器是否自动创建 private foo 属性?

我不确定我是否看到过这个约定有一个 lowercase private 属性被一个 public-facing uppercase 掩盖 一个就是惯例,或者如果它实际上是语言/编译器的一部分,您可以将其写出来或让它为您完成。

最佳答案

为什么不看看发生了什么?

  public class Test {
// private int myProp;

public int MyProp {
get;
set;
}
}

...

  string report = String.Join(Environment.NewLine, typeof(Test)
.GetFields(BindingFlags.NonPublic | BindingFlags.Instance)
.Select(field => field.Name));

Console.Write(report);

你会得到一个很奇怪的名字

<MyProp>k__BackingField

然而,这个奇怪的支持字段名称确保不会有名称冲突(您不能声明任何以 < 开头的字段、属性、方法等)。

编辑:如果您取消注释 // private int myProp;你将拥有的线

myProp
<MyProp>k__BackingField

请注意myProp 不是 MyProp 的支持字段属性(property)。

关于c# - 大写属性是否会在 C# 中自动创建小写私有(private)属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38373010/

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