问题标签 [automatic-properties]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
750 浏览

c# - 用于自动实现的 C# 属性的 Visual Studio 文本编辑器“成员”下拉图标?

有没有人知道的任何方法(可能通过加载项)可以轻松列出或可视化 Visual Studio 2008 SP1(独立或使用 ReSharper 4.5)中的类的字段(和自动属性)?

我已经习惯于 在 Visual Studio 2008 的 C# 代码文本编辑器的导航栏中的成员下拉列表中查看由蓝色框/菱形图标标识的类的字段。我发现告诉类“拥有”什么状态很有帮助字段以及类实例的大小。

自动实现的属性有一个匿名字段支持它们,但它们在成员下拉列表中没有单独的图标来指示它们背后有存储。

0 投票
5 回答
6826 浏览

c# - 在所有者类中使用属​​性与支持字段

我喜欢 C# 中的自动实现属性,但最近我的隔间里站着一头大象,我不知道该怎么处理他。

如果我使用自动实现的属性(以下简称“aip”),那么我不再有一个私有的支持字段可以在内部使用。这很好,因为 aip 没有副作用。但是如果以后我需要在 get 或 set 中添加一些额外的处理呢?

现在我需要创建一个支持字段,以便我可以扩展我的 getter 和 setter。这对于使用该类的外部代码来说很好,因为它们不会注意到差异。但是现在所有对 aip 的内部引用都将在访问属性时调用这些副作用。现在必须重构对曾经 aip 的所有内部访问以使用支持字段。

所以我的问题是,你们大多数人是做什么的?您是使用自动实现的属性还是更喜欢始终使用支持字段?您如何看待具有副作用的属性?

0 投票
1 回答
1705 浏览

svn - 带有自动道具和预提交钩子的 Svn 导入

我公司的 svn 存储库中有很多 MS Word 文档。我们实施了一项政策,即所有 .doc 文件都必须设置 svn:needs-lock 属性,以防止对难以合并的文件进行并行访问(我们也对 xls、ppt、pdf 等进行了此操作)。

我们已经通过分发 svn 配置来实施该策略,该配置具有为所有相关文档类型适当设置的 auto-props。我们还设置了一个预提交钩子,检查所有添加的这些类型的文件是否都设置了需要锁定属性(即,如果他们忘记/懒得更新他们的 svn 配置文件,他们将无法将任何文档添加到 repo)。

然而,我遇到的问题是,当用户尝试将文件导入存储库时,预提交挂钩失败,例如,一些用户喜欢直接通过 TortoiseSVN 的存储库浏览器添加文件,这实际上是一个 svn 导入。

通过对其他文件类型的测试,我发现导入确实应用了我的配置中列出的自动道具,但它们似乎并没有在预提交挂钩运行时应用。导入 .doc 文件时,钩子失败,说缺少 needs-lock 属性。

将单个文件添加到工作副本并提交它与直接导入文件之间真的有很大区别吗?我们是否需要以某种方式定制我们的预提交钩子以适应这种情况?

0 投票
4 回答
1480 浏览

c# - 为什么 C# 自动属性不支持像 VB 2010 这样的默认值?

查看新的 VB 2010 功能,我偶然发现了对Auto-Implemented Properties的支持。

由于我正在使用 C#,这似乎很熟悉,但我注意到 VB 确实添加了我希望在 C# 中拥有的功能:为自动实现的属性设置任意默认值:

我真的很喜欢在 C# 中干净地使用自动属性。这将节省我们每次只需要一个默认值时引入支持字段并将其连接到属性的工作,从而不必要地混乱代码。

我想知道为什么这也没有在 C# 中引入?不这样做的理由是什么?是否正在进行语法讨论,或者实施此操作是否存在技术限制?

0 投票
4 回答
5373 浏览

visual-studio-2008 - 不能在自动属性设置器上设置断点?为什么?

显然 VS 2008 不允许仅在自动属性的设置器上设置断点。

即,如果我定义这样的自动属性:

然后尝试在 setter 行上设置断点,整个自动属性变为断点红色。

这对于普通属性来说效果很好,所以知道为什么自动属性会得到这种特殊(限制性)处理吗?它们不仅仅是带有隐藏支持字段的普通属性的语法糖吗?

0 投票
8 回答
30078 浏览

c# - 从变量快速创建 C# 属性

对于 C#,我讨厌写出变量然后写出所有属性。没有办法选择所有变量,右键单击并创建所有属性。

0 投票
2 回答
85 浏览

refactoring - 重构此 .Net 1.1 示例时如何利用自动属性?

我看到很多遗留的 .Net 1.1 风格的代码在工作,如下例所示,我想在自动属性的帮助下缩小这些代码。这将帮助许多班级缩小 30-40%,我认为这会很好。

这将变成:

唯一的问题是 - 我在哪里设置MyIntThingy = -1;

如果我从一开始就写这门课,那么我会有一个更好的主意,但我没有。一个明显的答案是:把它放在构造函数中。麻烦的是:这个类中有很多构造函数。在调试器中观察初始化-1,我看到它在构造函数被调用之前发生(我相信)。就好像我需要使用此处描述的静态构造函数: http ://www.c-sharpcorner.com/uploadfile/cupadhyay/staticconstructors11092005061428am/staticconstructors.aspx ,除了我的变量不是静态的。我想到了 Java 的静态初始化程序,但又一次 - 我的变量不是静态的。http://www.glenmccl.com/tip_003.htm

我想对这个类进行风格但不是功能上的改变。尽管它很糟糕,但它已经经过了几年的测试和工作。破坏功能会很糟糕。所以......我正在寻找更短,更甜,更可爱,但等效的代码。如果您有任何问题,请告诉我。

0 投票
2 回答
1347 浏览

c# - 在 C# 中,我可以让自动属性在属性的帮助下执行一些额外的工作吗?

这个问题与此相关但不同:How do you give a C# Auto-Property a default value?

我喜欢自动属性,但有时我必须这样做:

如果我必须多次做同样的事情,我开始希望我不需要输入这么多行/字符的代码。我希望能够拦截该值并像这样更改它:

有没有办法做这样的事情?会不会很傻?有没有更好的办法?还有其他一般性意见吗?我承认,我给出的示例有点假设,我现在无法找到让我想到这一点的确切代码。

谢谢。

0 投票
1 回答
279 浏览

c# - MonoTouch - 字段与自动属性

使用字段而不是自动属性时是否存在明显的性能差异?如果我要反序列化一个数组,比如 1000 个 JSON 对象,每个对象有 5 个属性,该怎么办?

我的 iPhone 域模型基本上是我的 Web 应用程序用于序列化为 javascript 的 DTO 的副本。他们都习惯性地使用自动属性。我担心我在 MonoTouch 中使用它们会浪费 CPU 周期。

0 投票
4 回答
15228 浏览

c# - 如何正确定义类属性?

在项目中定义新类时,这样做的正确/最佳实践是什么?在过去,我创建了以下类:

通常我会使用这样的类来在项目中创建集合。

但是,随着我继续学习和阅读有关 c# sharp 的更多信息,我看到了将类定义为的示例:

第一种方法的定义是否不正确,或者这是 C# 中公认的速记版本?作为最佳实践,您是否应该始终首先使用私有字段定义类,然后使用 get/set 将它们定义为属性?

我问是因为我在 C# 中自学,我正在努力改进并更好地理解正确的开发方法,并且那里的一些示例和教程只是简单地陈述了方法,而没有明确解释为什么首选一种方法(或应该是完成)超过另一个。

提前致谢