c# - 什么时候使用get;放;在 C# 中

标签 c# properties

我无法理解初始化变量与像这样获取其值之间的区别:

 //define a local variable.
   int i;

   i= 0;
   Console.WriteLine(i);

然后得到;放;用法:

public int i
{
   get;
   set;
}

i = 0;
Console.WriteLine(i);

看了一些文章,不知道什么时候用。

最佳答案

基本上,在那种情况下,没有区别,使用属性的(许多)优点是能够将事件添加到您的属性中,如下所示:

  public delegate void ChangedEventHandler(object sender, EventArgs e);

  int m_i = 0;
  public int i 
  {
      get { return m_i; }
      set { m_i = value; iChanged(self, null); }
  }

  public ChangedEventHandler iChanged;

这允许代码知道我什么时候被改变了(可能有一些语法错误,我有一段时间没有关注 C#,但想法是相似的)。这在 winforms 中非常重要,因为这是了解按钮(或类似按钮)何时被点击的主要方式。


此外,这允许在属性的 setter 中使用其他功能,例如检查它是否在某个范围内,像这样:

  int m_i = 0;
  public int i {

  get { return m_i; }
  set { if (value > 10) throw new Exception("I cannot be greater than 10!"); m_i = value; }
  }

关于c# - 什么时候使用get;放;在 C# 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5366232/

相关文章:

c# - 动态添加/加载组件

grails - 域对象属性列表,不包括关联

java - log4J 与 java applet 和 java 插件2

c# - 如何在 MVC htmlAttribute 中设置禁用

c# - 插入与更新

C# .net 核心 swagger 尝试使用多个 API 版本,但所有端点都在所有文档中

c# - 如何加速 FileStream 的创建

delphi - 如何制作自定义组件属性?

properties - CXF - Wsdl2java - XX 属性已定义

class - TEdit和TQuery