gpt4 book ai didi

c# - 为什么使用 C# 的 ASP.NET 类的属性通常是公共(public)的,而使用 C# 的桌面应用程序的属性是私有(private)的?

转载 作者:太空宇宙 更新时间:2023-11-03 17:58:37 25 4
gpt4 key购买 nike

我搜索过高低(很可能错过了),但在我多年的编程中,我总是遇到一种似乎是 OOP 标准的做法,即在具有公共(public)方法的对象来操作数据。

然而,我越深入研究 ASP.NET(特别是 MVC),我在类(特别是模型)内部看到的公共(public)属性就越多,例如 Scottgu's blog discussing the Entity Framework 中所示的那些.

这与 LINQ 填充类的方式有关吗?

提前致谢,答案可能就在那里,但我已经找了很长时间,无法弄清楚为什么 ASP.NET 使用 public,甚至桌面 C# 应用程序使用 private。

最佳答案

您混淆了字段属性。 .NET 语言中属性的概念基本上是对您正在描述的 getset 函数的封装。

例如:

private int foo;

public int FooProperty
{
get { return foo; }
set { foo = value; ]
}

这与您在其他情况下看到的类似:

private int foo;

public int getFoo()
{
return foo;
}

public int setFoo(int value)
{
foo = value;
}

它基本上提供了类似于普通字段的语法,同时为开发人员提供了对实际获取和设置行为的控制。

可能会让您更加困惑的是,C# 有一种自动实现简单属性的简写形式(如上所示)。这样做:

public int Foo { get; set; }

实际上只是这个的简写:

private int _foo;

public int Foo
{
get { return foo; }
set { foo = value; }
}

这使您可以在面向公众的 API 中的任何地方使用属性,而不会牺牲字段的便利性。这意味着您可以

  1. 保持一致(所有公共(public)成员都通过属性公开,而不是属性和字段的混合
  2. 要灵活,这样您就可以在以后(如果需要)将属性背后的代码更改为完整属性,而无需更改面向公众的 API,也不必重新编译任何程序集引用了你的类型。

关于c# - 为什么使用 C# 的 ASP.NET 类的属性通常是公共(public)的,而使用 C# 的桌面应用程序的属性是私有(private)的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5197462/

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