Tag: 自动属性

C#自动属性

C#3.0的自动属性是否完全取代了提交的文件? 我的意思是,我可以直接使用该属性而不是归档作为属性作为私人支持字段。(对不起,我只是这样理解)。 int a; public int A { get;set; }

使用私有自动属性而不是编程标准的简单变量

在与同行的讨论中,提出我们应该考虑对所有类级变量使用自动属性…包括私有变量。 所以除了像这样的公共财产: public int MyProperty1 { get; set; } 我们的私有类级变量如下所示: private int MyProperty2 { get; set; } 代替: private int _myProperty2; 关于为什么有人会想要这样做但我无法决定我是否愿意接受这一点是因为我自己内部洗脑以及如何将我的代码写入相同的编程标准和命名惯例使用了10年,或者因为我以前从未见过(因为某种原因)。 我知道这是额外的代码输入,但说实话,当使用自动属性时,我认为我没有输入它,因为’prop’和’propg’片段因此设置起来非常简单一个新的代码片段来创建一个私有的自动属性,所以额外的代码不会打扰我太多,因为我从来没有打字。 除了美学可能只是我的潜意识,使用完全私人汽车财产可能会导致任何问题吗? 这样做有没有充分的理由呢? 我今天在stackoverflow,codeplex,codeproject等上看到了很多代码,我从未见过有人使用过这个标准….有原因吗?

你经常看到滥用C#速记吸气剂/安装者?

在C#中,您可以以比其他语言更简单的方式创建getter / setter: public int FooBar { get; set; } 这将创建一个内部私有变量,您无法直接寻址,外部属性“FooBar”可以直接访问它。 我的问题是 – 你多久经常看到这种滥用? 它似乎很有可能经常违反封装最佳实践。 不要误解我的意思,我会酌情使用它,并为只读的只写类型的属性使用它的部分变体,但是你的代码库中的其他作者对它的不愉快经历是什么? 澄清:当私人变量合适时,滥用的预期定义确实会产生这样的属性。

代码与自动实现的属性签订合同

有没有办法将合同放在.NET中自动实现的属性上? (如果答案是’是’怎么办?)? (我假设使用DevLabs的.NET代码合同)

了解自动实现的属性

我有使用自动实现的属性的简单类: Public Class foo { public foo() { } public string BarName {get; set;} } 我显然在我的类中使用变量BarName,现在需要在设置属性值时添加逻辑(它必须全部为大写,如图)。 这是否意味着我现在需要为BarName创建一个私有变量,例如_BarName,并将我的类中使用的当前BarName变量更改为_BarName? Public Class foo { public foo() {} private string _BarName = “”; public string BarName { get {return _BarName;} set {_BarName = Value.ToString().ToUpper();} } } 我试图确保我理解使用自动实现的属性的含义,以及当我/如果我需要更改某些内容时它会带来什么。 我假设重构,如上所示,不是一个突破性的变化,因为该属性基本上保持不变; 它只是在类中做了一些工作,以保持这种方式并添加所需的逻辑。 另一个可能更有意义的例子是我需要在使用setter或getter时调用某个方法; 更多然后改变价值。 这似乎是设置属性的代码行和行的公平交易。

在C#中封装集合

由于3.0 C#具有很好的语法糖,如自动属性,这大大简化了封装原理的实现。 如果你将它与primefaces值一起使用,这是很好的,所以你可以像这样替换封装模式: private string _name; public string Name { get { return _name; } set { _name = value; } } 只有一行: public string FirstName { get; set; } 我非常喜欢这个很棒的function,因为它节省了很多开发人员的时间。 但是当你创建指向集合的属性时,事情并不是那么好。 通常我会看到以两种方式之一实现的集合属性。 1)根本没有自动属性可以使用字段初始化程序: private List _names = new List(); public List Names { get { return _names; } } 2)使用自动属性。 如果类只有一个构造函数,这种方法就可以了: public List Names […]

为什么我的自动实现的属性在ASP.NET 2.0中工作?

我在ASP.NET Web应用程序的C#源文件中使用自动实现的属性语法: public int IdUser { get; set; } … this.IdUser = 1; 该项目的Target框架是.NET Framework 2.0 。 它编译并且似乎在仅安装了ASP.NET 2.0的IIS服务器上正常运行。 我使用Visual Studio 2010进行开发和编译。 我理解这个语法随.NET 3一起提供。 我在VS的某个地方错过了设置吗? 我是否可以在IIS / ASP.NET 2.0服务器上部署网站时遇到问题?

没有身体的吸气,塞特与

我有一个目前自动的属性。 public string MyProperty { get; set; } 但是,我现在需要它在每次更改时执行一些操作,所以我想向setter添加逻辑。 所以我想做的事情如下: public string MyProperty { get; set { PerformSomeAction(); } } 但是,这不构建… MyProperty.get’ must declare a body because it is not marked abstract, extern, or partial 我不能让getter返回MyProperty因为它会导致无限循环。 有没有办法做到这一点,还是我必须声明一个私有变量来引用? 我宁愿不要因为MyProperty在这个类和它之外的代码中被使用

使用BinaryFormatter将自动实现的属性更改为正常和反序列化

我有一个实现像属性的对象 public String Bla {get;set;} 在将实现更改为类似之后 private String _bla; public String Bla { get { return _bla; } set { _bla = value; } } 在反序列化中,这个属性是空的。 我有来自旧实现的大量序列化数据,并希望使用新实现加载它们 有没有办法,改变实现与旧的二进制文件兼容? 编辑: 有些人可能遇到同样的问题,所以这是我的hackish解决方案: 自动生成的字段的命名约定是无效的c#代码: [CompilerGenerated] private string k__BackingField; [CompilerGenerated] public void set_MyField(string value) { this.k__BackingField = value; } [CompilerGenerated] public string get_MyField() { return this.k__BackingField; } 对我来说快速而肮脏的修复是在源代码中创建一个名为xMyFieldxK__BackingField的私有支持字段, 通过在反序列xMyFieldx之前用xMyFieldx替换所有出现的来修补序列化的二进制数据

使用自动属性实现单例是一个好主意吗?

我最近发现了有关自动属性的内容并且非常喜欢它们。 此刻,我正试图在任何地方使用它们。 不仅仅是能够在任何地方使用它们,而是更多地了解它们在大多数情况下的工作情况。 现在我正在制作一个单身人士并且想:“嘿,让我们在这里尝试自动属性”。 public class MySingleton { public static MySingleton MySingleton { get; private set; } private MySingleton() {} static MySingleton() { MySingleton = new MySingleton(); } } 所以我的问题是:“实现像这样的单身人士是一个好主意吗?” 我不是在问一个单身一般是不是一个好主意。