相关疑难解决方法(0)

为什么在C#中使用简单属性而不是字段?

可能重复:
我应该使用公共属性和私有字段或公共字段来获取数据吗?
C#3.0中自动属性和公共字段之间的区别

人们似乎教条地坚持在田野上使用公共财产,但为什么在简单财产的情况下它如此重要?

怎么

public int Foo { get; set; }
Run Code Online (Sandbox Code Playgroud)

非常不同于

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

在我的脑海中,我可以想到两者之间的实际差异:

  • 使用反射访问成员(罕见,最体面的反射算法将解释差异)
  • 第二个条目允许您使用该字段作为ref和out参数的有效参数,这似乎是使用字段版本的一个优势
  • 字段在Remoting中不起作用(可能,我从未使用过远程处理,但我想他们不会)

除了这些非常罕见的情况之外,稍后将Foo更改为计算属性会导致更改0行代码.

c#

29
推荐指数
5
解决办法
2万
查看次数


为什么我们需要C#中的属性

你能告诉我C#中属性的确切用法,我的意思是实用的解释

在我们的项目中,我们正在使用像

/// <summary>
/// column order
/// </summary>
protected int m_order;

/// <summary>
/// Get/Set column order
/// </summary>
public int Order
{
   get { return m_order; }
   set { m_order = value; }
}

/// <summary>
/// constructor
/// </summary>
/// <param name="name">column name</param>
/// <param name="width">column width</param>
/// <param name="order">column order</param>
public ViewColumn(string name, int width, int order)
{
   //
   // TODO: Add constructor logic here
   //
   m_name = name;
   m_width = width;
   m_order = order;
} …
Run Code Online (Sandbox Code Playgroud)

.net c# properties

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

财产(没有额外处理)与公共领域

每当有关于Properties的可信度的问题时,我发现大多数讨论都是围绕函数/方法和属性进行的.但我也想知道使用属性与相关私有字段直接与公共字段直接使用的令人信服的理由,包含最常见的获取/设置行为而没有其他处理,我的意思是这种方式

public string CustomerName;
Run Code Online (Sandbox Code Playgroud)

VS

private string customerName;
public string CustomerName
{
get{return customerName;}
set(string value){this.customerName=value;}
}
Run Code Online (Sandbox Code Playgroud)

c# properties

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

自动实现的属性c#

  1. 有人可以解释一下使用Auto-Implemented Properties c#背后的想法吗?

    public class Customer
    {
        public int ID { get; set; }
        public string Name { get; set; }
    }
    
    Run Code Online (Sandbox Code Playgroud)

    我有动力使用私有​​字段的属性,因此我们可以确定如何访问私有字段.但在这里 - 就像从一开始就将这个领域定义为公开一样.没有?

  2. 将字段定义为"public const"或将其定义为具有get-only属性之间是否存在差异?

c#

11
推荐指数
2
解决办法
9475
查看次数

C#protected field to private,添加属性 - 为什么?

在Visual Studio 2008 Team System中,我刚刚在我的一个C#项目上运行了Code Analysis(来自Analyze菜单).产生的警告之一如下:

Microsoft.Design:因为字段"Connection._domain"在其声明类型之外是可见的,所以将其可访问性更改为private,并添加一个具有与当前字段相同的可访问性的属性,以提供对它的访问.

它指的是以下字段:

public abstract class Connection
{
    protected string _domain;
}
Run Code Online (Sandbox Code Playgroud)

我不明白这个建议背后的原因.这是我认为它要我做的事情:

public abstract class Connection
{
    private string _domain;
    protected string Domain { get { return _domain; } set { _domain = value; } }
}
Run Code Online (Sandbox Code Playgroud)

两个问题:

  1. 我是否正确理解了建议要求我做什么,代码明智?
  2. 为什么要我这样做?

c# static-analysis access-levels

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

公共财产定义

为对象定义属性而不是直接访问私有变量有什么好处?

代替 :

public class A

    private _x as integer = 0

    Public property X() as integer
        Get
            return _x

        End Get
        Set(ByVal value As integer)
            _x = value
        End Set
    End Property

end class
Run Code Online (Sandbox Code Playgroud)

为什么我们不能做以下事情:

public class A

    public _x as integer = 0

end class
Run Code Online (Sandbox Code Playgroud)

有什么好处?

c# variables field properties class

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

c#:拥有纯粹的公共财产有什么意义

可能重复:
我应该使用公共属性和私有字段或公共字段来获取数据吗?
财产(没有额外处理)与公共领域

在类中只有一个属性来获取和设置成员变量有什么意义?

将变量公之于众的实际差异是什么?

c# oop properties

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

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

可能重复:
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
查看次数

是否可以跳过私有字段并只使用C#中的属性?

我的讲师告诉我们使用私人田地和公共财产.最近,我正在观看教程视频.演示者仅创建属性.可以使用该属性吗?

c#

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

公共财产中的私人集合方法

请帮助解决这个问题.我有一个公共类,有一些属性.属性集是私有的,get是公共的.设置属性的唯一方法是调用构造函数.这种设计有什么好处或缺点?我应该知道有什么影响吗?我的论点是,如果私人套装没有任何好处,为什么呢?counter参数是在实例化类之后不需要更改属性,如果需要修改类以允许它.

这只是哲学还是背后有实际的技术推理?

public string Id
{
    get;
    private set;
}
Run Code Online (Sandbox Code Playgroud)

更新:只是为了澄清这个问题.我不是在问私人套装是什么以及在哪里使用它.我问您是否不知道您的属性是否需要在构造函数之外进行更改,或者您是否从限制集合中获益.所以我想问题是,如果你不知道你走哪条路,答案是否尽可能限制它?

.net c#

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

标签 统计

c# ×11

properties ×6

.net ×2

field ×2

access-levels ×1

class ×1

oop ×1

static-analysis ×1

variables ×1