了解私人设置者

2023-11-23

我不明白需要有从 C# 2 开始的私有设置器。

对我来说,有一个 setter 方法可以让用户在该类中设置一些变量。这样做时,我们不会将变量直接暴露给用户。相反,我们让他们通过这个公共 setter 方法来完成此操作。

这对我来说是使用“封装”。有一些论点声称私有设置器将允许您应用封装。

我不是通过使用公共 setter 方法来使用封装吗?为什么我们需要私人设置者?

不可变类和具有私有设置器的类有什么区别?


从逻辑上讲。

私有 setter 的存在是因为您可以使用 auto 属性:

public int MyProperty { get; set; }

如果你想将其设为只读,你会怎么做?

public int MyProperty { get; }

哦糟糕!我无法从我自己的班级访问它;我应该像普通属性一样创建它:

private int myProperty;
public int MyProperty { get { return myProperty; } }

嗯...但是我失去了“自动属性”功能...

public int MyProperty { get; private set; }

啊啊..那就更好了!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

了解私人设置者 的相关文章

  • WPF DataGrid 多选

    我读过几篇关于这个主题的文章 但很多都是来自 VS 或框架的早期版本 我想做的是从 dataGrid 中选择多行并将这些行返回到绑定的可观察集合中 我尝试创建一个属性 类型 并将其添加到可观察集合中 它适用于单个记录 但代码永远不会触发多个
  • 调用 McAfee 病毒扫描引擎

    我收到客户的请求 要求使用他们服务器上的 McAfee 病毒扫描将病毒扫描集成到应用程序中 我做了一些调查 发现 McScan32 dll 是主要的扫描引擎 它导出各种看起来有用的函数 我还发现提到了 McAfee Scan Engine
  • STL 迭代器:前缀增量更快? [复制]

    这个问题在这里已经有答案了 可能的重复 C 中的预增量比后增量快 正确吗 如果是 为什么呢 https stackoverflow com questions 2020184 preincrement faster than postinc
  • 没有特殊字符的密码验证器

    我是 RegEx 的新手 已经进行了大量搜索 但没有找到任何具体内容 我正在编写一个验证密码字符串的正则表达式 可接受的字符串必须至少具有 4 种字符类型中的 3 种 数字 小写字母 大写字母 特殊字符 我对包含有一个想法 也就是说 如果这
  • 根据属性的类型使用文本框或复选框

    如果我有这样的结构 public class Parent public string Name get set public List
  • 通过引用传递 [C++]、[Qt]

    我写了这样的东西 class Storage public Storage QString key const int value const void add item QString int private QMap
  • std::vector 与 std::stack

    有什么区别std vector and std stack 显然 向量可以删除集合中的项目 尽管比列表慢得多 而堆栈被构建为仅后进先出的集合 然而 堆栈对于最终物品操作是否更快 它是链表还是动态重新分配的数组 我找不到关于堆栈的太多信息 但
  • 如何在 C# 中打开 Internet Explorer 属性窗口

    我正在开发一个 Windows 应用程序 我必须向用户提供一种通过打开 IE 设置窗口来更改代理设置的方法 Google Chrome 使用相同的方法 当您尝试更改 Chrome 中的代理设置时 它将打开 Internet Explorer
  • -webkit-box-shadow 与 QtWebKit 模糊?

    当时有什么方法可以实现 webkit box shadow 的工作模糊吗 看完这篇评论错误报告 https bugs webkit org show bug cgi id 23291 我认识到这仍然是一个问题 尽管错误报告被标记为RESOL
  • 如何连接重叠的圆圈?

    我想在视觉上连接两个重叠的圆圈 以便 becomes 我已经有部分圆的方法 但现在我需要知道每个圆的重叠角度有多大 但我不知道该怎么做 有人有主意吗 Phi ArcTan Sqrt 4 R 2 d 2 d HTH Edit 对于两个不同的半
  • 无限循环与无限递归。两者都是未定义的吗?

    无副作用的无限循环是未定义的行为 看here https coliru stacked crooked com view id 24e0a58778f67cd4举个例子参考参数 https en cppreference com w cpp
  • 如何使从 C# 调用的 C(P/invoke)代码“线程安全”

    我有一些简单的 C 代码 它使用单个全局变量 显然这不是线程安全的 所以当我使用 P invoke 从 C 中的多个线程调用它时 事情就搞砸了 如何为每个线程单独导入此函数 或使其线程安全 我尝试声明变量 declspec thread 但
  • 用于 FTP 的文件系统观察器

    我怎样才能实现FileSystemWatcherFTP 位置 在 C 中 这个想法是 每当 FTP 位置添加任何内容时 我都希望将其复制到我的本地计算机 任何想法都会有所帮助 这是我之前问题的后续使用 NET 进行选择性 FTP 下载 ht
  • 在 Unity 中实现 Fur with Shells 技术

    我正在尝试在 Unity 中实现皮毛贝壳技术 http developer download nvidia com SDK 10 5 direct3d Source Fur doc FurShellsAndFins pdf Fins 技术被
  • 为什么这个字符串用AesCryptoServiceProvider第二次解密时不相等?

    我在 C VS2012 NET 4 5 中的文本加密和解密方面遇到问题 具体来说 当我加密并随后解密字符串时 输出与输入不同 然而 奇怪的是 如果我复制加密的输出并将其硬编码为字符串文字 解密就会起作用 以下代码示例说明了该问题 我究竟做错
  • C# xml序列化必填字段

    我需要将一些字段标记为需要写入 XML 文件 但没有成功 我有一个包含约 30 个属性的配置类 这就是为什么我不能像这样封装所有属性 public string SomeProp get return someProp set if som
  • 如何在 Linq to SQL 中使用distinct 和 group by

    我正在尝试将以下 sql 转换为 Linq 2 SQL select groupId count distinct userId from processroundissueinstance group by groupId 这是我的代码
  • 为什么C++代码执行速度比java慢?

    我最近用 Java 编写了一个计算密集型算法 然后将其翻译为 C 令我惊讶的是 C 的执行速度要慢得多 我现在已经编写了一个更短的 Java 测试程序和一个相应的 C 程序 见下文 我的原始代码具有大量数组访问功能 测试代码也是如此 C 的
  • 指针和内存范围

    我已经用 C 语言编程有一段时间了 但对 C 语言还是很陌生 有时我对 C 处理内存的方式感到困惑 考虑以下有效的 C 代码片段 const char string void where is this pointer variable l
  • 使用 WGL 创建现代 OpenGL 上下文?

    我正在尝试使用 Windows 函数创建 OpenGL 上下文 现代版本 基本上代码就是 创建窗口类 注册班级 创建一个窗口 choose PIXELFORMATDESCRIPTOR并设置它 创建旧版 OpenGL 上下文 使上下文成为当前

随机推荐

  • 当应用程序处于后台时,NSTimer 的行为是什么?

    我知道当您后台应用程序时 计时器会停止运行 然而 当你从后台回来时 行为是什么 定时器是否保持原来的状态fireDate 我遇到了一个问题 即从后台返回并设置十分钟后触发的 NSTimer 时 有时我会立即让计时器在之前触发applicat
  • 在 RawContacts 中找不到 Facebook 联系人

    我正在尝试构建一个联系人管理应用程序 我的手机上有多个帐户的联系人 包括 Facebook 和 HTC Facebook 由于某种原因 我无法从RawContacts表的ContactsContract managedQuery Conta
  • 在 Google Chrome 中打印表格时,内容与标题重叠

    我在打印包含 HTML 代码的表格时使用 Google Chrome 遇到问题 我需要创建一个带有标题的文档 为了实现这一点 我使用带有 thead 元素的表格 因此浏览器将为打印文档的每个页面复制它 问题是当我在页面中有分页符时 内容与标
  • 获取Windows消息名称[重复]

    这个问题在这里已经有答案了 我有一个使用 DLL 扩展的 Windows 程序 我通过调试流对象包含调试代码 这些对象通过 OutputDebugString 进行打印 并且可以使用 DebugView 进行查看 接口的一部分是消息处理函数
  • 多相机图像拼接

    我一直在运行一个从多个摄像机拼接图像的项目 但我认为我遇到了瓶颈 我对这个问题有一些疑问 我想将来尝试将它们安装在车辆上 这意味着相机的相对位置和方向是固定的 另外 由于我使用多个相机并尝试使用同位图来缝合它们的图像 我会将相机放置得尽可能
  • Android底部导航查看项目文本颜色?

    我开始研究 Android 底部导航视图 但我面临一个问题 如果我向底部导航视图添加 5 个项目 则只有选定的项目显示项目文本 如果我添加 3 个项目 它就可以正常工作 任何人请告诉我如何显示所有 5 个项目的项目文本 先感谢您 菜单 xm
  • JsonMappingException 没有单字符串构造函数/工厂方法 Jackson

    我正在尝试使用 Spring 构建 Jackson 支持来解析从控制器中的 UI 发送的 JSON 数据 这是我的代码 final Map
  • 使用 Interface Builder 进行绑定(适用于 iPhone 应用程序)

    如何使用 Interface Builder 绑定 iPhone SDK 控件 例如 UISlider 与常规 Cocoa 应用程序不同 当使用 Interface Builder 打开 iPhone 应用程序 XIB 时 绑定选项卡似乎不
  • 使用 doxygen 的 \link 命令

    我有一个外部 HTML 文件 我想从我的 doxygen 相关页面 选项卡或左侧框架中链接 看来我需要使用 link命令 但我找不到如何使用它或在哪里使用它的好例子 我目前正在使用 doxywizard 生成 HTML So is link
  • jQuery 中的并行 JSONP 请求不会触发多个“回调事件”?

    当我执行多个 jsonp 请求时 我在 jQuery 中遇到问题 所有请求都使用相同的 jsonpCallback 函数 似乎只有其中之一才会触发回调函数 JSONP 请求是否会以某种方式相互覆盖 下面是向 github 发出 2 个 js
  • 自动实现属性的 C# 协变返回

    如你所知 C 9 0 Net 5 现在允许协变返回 我需要帮助将其应用于一组具有自动实现属性的类 我有两个代表金融银行账户和交易的抽象类 我将它们抽象化 因为我将从各种数据源中提取数据 虽然主要属性在所有源中都是通用的 但每个源可能有我想要
  • JCenter 弃用;对 Gradle 和 Android 的影响

    我应该担心吗JCenter被弃用 为什么我应该将我的库从JCenter到其他 Maven 存储库 我可以继续使用吗jcenter 在我的 Gradle 构建脚本中 Replace jcenter 有了这个 mavenCentral
  • 如何定义 shell 脚本变量使其具有脚本之外的作用域

    我正在使用 Ubuntu Natty 我有一个 shell 脚本 已保存到 etc init d qstart shell脚本包含以下内容 apt get y update apt get y upgrade apt get y insta
  • JQuery/Javascript 或其他方式静默打印仅一次

    任何人都知道如何在跨浏览器 API 或 jQuery 或 javascript 等库中打印文件而不显示打印预览 打印内容而无需打印预览 仅静音打印 打印一次 当打印软拷贝时 软拷贝就会过期 因为出于安全原因 我想避免用户重新打印不止一份软拷
  • 测试框架表示实体没有为内置实体定义键

    Castle Proxies IdentityUserLogin EntityType IdentityUserLogin has no key defined Define the key for this EntityType 我正在尝
  • 如何在 html5 canvas 中对齐文本?

    如何在 html5 画布中对齐文本以 对齐 在下面的代码中 文本可以左 右 中心对齐 我需要设置align justify 请建议如何做到这一点 HTML
  • 按更改类型过滤 git diff

    有没有办法限制git diff更改文件 我想查看两次提交之间的差异 但排除其中一个或另一个中不存在的路径 添加 删除 下面的 Perl 一行行说明了我想要的大部分内容 git diff master perl lnwe print unle
  • Spring Boot应用程序中环境特定的application.properties文件[关闭]

    Closed 这个问题需要多问focused 目前不接受答案 在我的 Spring Boot 应用程序中 我想创建特定于环境的属性文件 我的应用程序在 war 中的打包类型 我正在嵌入式 tomcat 中执行它 我使用 sts 并从 sts
  • WiX ServiceInstall - 将服务设置为以当前 Windows 用户身份运行

    我正在使用 WiX 安装 Windows 服务 如何使服务在运行安装程序的 Windows 用户上下文中运行 您需要拥有要运行服务的用户的帐户名和密码 我通过向安装程序添加自定义 UI 来要求输入用户名和密码 然后使用 ServiceIns
  • 了解私人设置者

    我不明白需要有从 C 2 开始的私有设置器 对我来说 有一个 setter 方法可以让用户在该类中设置一些变量 这样做时 我们不会将变量直接暴露给用户 相反 我们让他们通过这个公共 setter 方法来完成此操作 这对我来说是使用 封装 有