相关疑难解决方法(0)

公共字段与自动属性

我们经常被告知我们应该通过为类字段制作getter和setter方法(C#中的属性)来保护封装,而不是将字段暴露给外部世界.

但是很多时候,一个字段只是用来保存一个值,并且不需要任何计算来获取或设置.对于这些,我们都会这样做:

public class Book
{
    private string _title;

    public string Title
    {
          get{ return _title;  }
          set{ _title = value; }
    }
}
Run Code Online (Sandbox Code Playgroud)

好吧,我有一个坦白,我不忍心写所有这些(真的,它不必写它,它不得不看它),所以我去流氓和使用公共领域.

然后是C#3.0,我看到他们添加了自动属性:

public class Book
{
    public string Title {get; set;} 
}
Run Code Online (Sandbox Code Playgroud)

这更整洁,我很感激它,但是真的,除了创建一个公共领域之外还有什么不同?

public class Book
{
    public string Title;
}
Run Code Online (Sandbox Code Playgroud)

c# field properties class automatic-properties

333
推荐指数
10
解决办法
6万
查看次数

15
推荐指数
1
解决办法
1万
查看次数

public int i和public int i之间有什么区别{get; set;}(自动属性和公共成员之间有什么区别?)

可能重复:
c#:为什么有空的get set属性而不是使用公共成员变量?
C#:公共字段与自动属性

我在我的代码中使用"自动"属性,我想知道这段代码之间的实际区别是什么:

public class foo{
    public int i;
}
Run Code Online (Sandbox Code Playgroud)

public class foo{
    public int i {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

我知道存在差异,因为我使用的正常第三方错过了公众成员,但发现他们曾经添加过{get; set;}.

由于背后没有私人领域,幕后背后会发生什么?

c#

5
推荐指数
1
解决办法
6669
查看次数

使用默认访问权限的自动实现属性而不是使用公共字段有什么好处?

可能重复:
C#:公共字段与自动属性
我是否需要使用{get; 组; 获取和设置时没有特殊操作的c#字段

考虑以下两个选项:

public int Foo { get; set; }

public int Foo;
Run Code Online (Sandbox Code Playgroud)

它们似乎在语义上是等价的,我相信它们甚至会编译成同一个IL.那么使用该物业有什么好处?看到一个公共领域让我感到不安,但我想不出使用属性语法的任何具体优势.如果将来需要显式的getter和setter,public int Foo;则可以替换为public int Foo { ... }不需要其他更改.我能想到的最好的是属性语法感觉更好,但我很难用这个理由来说服其他人.

在这种情况下使用属性语法的优点(如果有的话)是什么?

c# properties

2
推荐指数
1
解决办法
1366
查看次数

自动属性与具有变量的属性 - 性能考虑

我理解差异。两者之间。并阅读与此相关的主题。我的问题是关于任何性能提升。我曾经用局部变量创建属性。每当我在类中使用属​​性时,我都会使用局部变量而不是属性。我认为这有一点好处,而不是调用属性,然后调用局部变量的属性。在自动属性中,这是不可能的。我的假设正确吗?它在我的方法中是否有任何收益(可能很小)?

样本

Public class class1
{
 private int _someField;
 public int SomeField
 {
  get{return _someField;}
  set {_someField = value;} 
 }

 Public void Insert()
 {
     str= "insert into table values(" + SomeField + ")  
     //or is it better to use like this?
    str= "insert into table values(" + _someField + ")

 }  
}
Run Code Online (Sandbox Code Playgroud)

c# properties

1
推荐指数
1
解决办法
2418
查看次数

get:set的目的是什么?

在C#代码的许多样品包含getset代码块.他们的目的是什么?我将这些块复制在示例代码中,但不知道它用于什么.有人可以向我解释一下吗?

c# properties

0
推荐指数
2
解决办法
4471
查看次数

标签 统计

c# ×6

properties ×5

automatic-properties ×1

class ×1

field ×1