gpt4 book ai didi

c# - 在C#中使用私有(private)变量有什么好处

转载 作者:太空狗 更新时间:2023-10-29 18:04:40 52 4
gpt4 key购买 nike

示例代码(替代代码如下),

// person.cs
using System;
class Person
{
private string myName ="N/A";

// Declare a Name property of type string:
public string Name
{
get
{
return myName;
}
set
{
myName = value;
}
}
public override string ToString()
{
return "Name = " + Name;
}

public static void Main()
{
Person person = new Person();
Console.WriteLine("Person details - {0}", person);
person.Name = "Joe";
Console.WriteLine("Person details - {0}", person);

}
}

难道我们不能直接写,把myName从private改成public,不需要再声明一个公有变量Name,也不需要get和set吗?

替代代码

    // person.cs
using System;
class Person
{

public string myName ="N/A";

public override string ToString()
{
return "Name = " + myName;
}

public static void Main()
{
Person person = new Person();
Console.WriteLine("Person details - {0}", person);
person.myName = "Joe";
Console.WriteLine("Person details - {0}", person);

}
}

最佳答案

外部可见属性优于字段,因为:

  • 属性允许更好的封装。字段是一个固定的实现,允许消费者直接访问。属性:

    • 松散耦合(因为底层字段可以从变量变为数据库随时)

    • 允许自定义逻辑(验证、事件通知、延迟加载等)

    • 控制访问(因为逻辑可以在 get/set 中构建,甚至声明为只读或只写)。

  • 字段不能在接口(interface)中使用。这是测试驱动开发(界面优先)的障碍。

  • 自动或自动实现的属性 与字段一样易于声明,并且还经过优化以与字段同等执行。参见 here .

  • 声明外部可见字段(公共(public)、 protected 、内部 protected )是 FxCop 违规行为。参见 rule CA1051 .

  • 将字段更改为属性是一个重大更改,因为需要重新编译调用代码(也适用于二进制序列化)。

  • 属性被 .NET 中的许多库识别用于 XML 序列化、WPF 绑定(bind)、ASP.NET 双向绑定(bind)等任务,也被 Visual Studio 设计器识别

关于c# - 在C#中使用私有(private)变量有什么好处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17186432/

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