问题标签 [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.
c# - .NET - 尝试编译自动属性时出错
我正在尝试使用此代码编译 POCO
我不断在获取和设置上收到编译错误,其中包含以下消息:“MenuItem.Name.get”必须声明一个主体,因为它没有标记为抽象或外部。我错过了什么?我正在本地文件系统网站的 App_Code 文件夹中编译此类,该网站设置为编译为 .NET 3.5。我知道我以前做过,但不知道我在做什么不同。
c# - 自动属性和结构不混合?
在回答这个帖子时踢了一些小结构,我意外地遇到了以下情况:
以下结构,使用 int 字段是完全合法的:
但是,使用自动属性的以下结构无法编译:
返回的错误是“'this'对象在其所有字段都分配给之前不能使用”。我知道这是结构的标准过程:必须从结构的构造函数中直接(而不是通过属性的 set 访问器)分配任何属性的支持字段。
一种解决方案是使用显式支持字段:
(请注意,VB.NET 不会有这个问题,因为在 VB.NET 中,所有字段在首次创建时都会自动初始化为 0/null/false。)
在 C# 中使用带有结构的自动属性时,这似乎是一个不幸的限制。从概念上考虑,我想知道这是否不是一个合理的地方,允许在结构的构造函数中调用属性集访问器的异常,至少对于自动属性?
这是一个小问题,几乎是一个极端情况,但我想知道其他人对此有何看法......
c# - 自动实现的属性是否支持属性?
有人告诉我,在 c# 中,自动实现的属性不允许使用属性。真的吗?如果是,为什么?
编辑:我从一本流行的 LINQ 书籍中获得了这些信息,简直不敢相信!编辑:请参阅 Paul Kimmel 的 LINQ Unleashed 第 34 页,他说“自动实现的属性不允许使用属性,因此如果需要属性,请自行选择属性”
c# - 调用 INotifyPropertyChanged 的 PropertyChanged 事件的最佳方式是什么?
当您实现 INotifyPropertyChanged 接口时,您负责在每次更新类中的属性时调用 PropertyChanged 事件。
这通常会导致以下代码:
即每个属性12 行。
如果能够像这样装饰自动属性,那就简单多了:
但不幸的是,这是不可能的(例如,请参阅 msdn 上的这篇文章)
如何减少每个属性所需的代码量?
visual-studio-2008 - 有没有办法让 Visual Studio 2008 停止格式化我的 AutoProperties?
在 Visual Studio 2008 的 Options > Text Editor > C# > Formatting 中,我勾选了以下设置。
自动格式化完成的语句;
在 } 上自动格式化完成的块
这在我编写方法或 for/foreach/while/if 语句时非常有用。
即如果我写
我希望它在我输入最后一个 } 时将其重新格式化为以下格式
但是,当我写:
我希望它保持这种状态,而不是改为:
无论如何,我能做到这一点还是我在做梦?我能想到的唯一方法是关闭这两个设置……但这只会导致烦恼转移到我编写方法和 if 语句等时。
更新:只是想我会提到我使用 Resharper ......所以如果有办法通过那里完成它,我也会有兴趣知道这一点。
c# - 是否有可以处理自动属性的 Reflector 插件或其他工具?
反射器显示自动属性:
是否有任何插件或其他工具可以将其转换为:
我不相信这些加载项中的任何一个都支持上述内容:http: //www.codeplex.com/reflectoraddins
如果您证明我错了,购买会很高兴。
c# - C# 3.0+ 中属性和字段的区别
我意识到它似乎与C# 中的字段和属性有什么区别?但我的问题略有不同(从我的角度来看):
一旦我知道
- 我不会将我的课程与“仅适用于属性的技术”一起使用,并且
- 我不会在 getter/setter 中使用验证代码。
是否有任何区别(样式/未来开发的除外),例如设置属性时的某种类型的控件?
是否有任何额外的区别:
和
(我知道,第一个版本需要 C# 3.0 或更高版本,并且编译器确实创建了私有字段。)
c# - 您认为“自动接口实现”在 .NET / C# 中有用吗
考虑一下:
还有这个:
用法:
或者:
或者:
所以实际上我们同时声明了IPerson接口和Person类:
您认为在 .NET/C# 中获得这种支持有用吗?
编辑:
由于大量混乱,我认为我需要澄清提议的目的:
如果没有此功能,您将不得不编写:
还有这个:
我根本不建议进行任何语义更改。
c# - 我可以使用 get 和 set 代码创建自动属性(无私有成员)吗?
在 c# 中,我可以这样做:
这很好。但是,一旦我想在 getter 或 setter 中做任何事情,我就必须将其更改为:
有可能避免这种情况吗?我希望能够做这样的事情:
我能离上面多近?
visual-studio-2005 - 如何在 VS2005 中使用 .NET 3.0?
我正在尝试在 VS2005 中使用自动实现的属性。我的机器上加载了 .NET 3.0 框架,但 Visual Studio 仍在使用 .NET 2.0 进行编译。我如何告诉它使用 .NET 3.0?