使用没有函数或类语法的{C#括号

时间:2017-03-15 00:13:37

标签: c# syntax

我是C#的新手,我找不到合适的搜索内容。我试图理解这三种语法之间的区别:

  1. public string Topic(){}
  2. public class Topic{}
  3. public string Topic{}
  4. 我知道第一个是一个功能而第二个是一个类,但让我困惑的是第三个是什么。

    问题

    #3被叫什么以及它是如何使用的?

    任何可以提供清晰度的事情。

5 个答案:

答案 0 :(得分:5)

第三是属性。 C#中最常见的表示形式是自动生成的属性,如下所示:

public string Topic { get; set; }

相当于:

private string _topic;

public string Topic
{
    get { return _topic; }
    set { _topic = value; }
}

它应该用于保存对象的内部状态。

它可以是只读的属性,只有getter:

public string Topic { get; }

或仅限制作者:

public string Topic { set; }

您还可以在getter和setter中应用辅助功能修改器,例如:

public string Topic { protected get; private set; }

答案 1 :(得分:1)

第三个是属性,如果使用正确的话。它基本上是一个内置getter和setter的变量。

public string Topic {get; set;}

这会自动创建一个字符串变量,允许您通过Topic =“new topic”

直接设置或获取
public string Topic {get; private set; }

允许公共访问读取值,但只有本地类可以设置它。

通常,当需要比简单设置/获取更复杂时,它们将与另一个支持值一起使用:

string _topic;
public string Topic { 
    get { return _topic; }
    set { _topic = value; }
}

答案 2 :(得分:1)

第三个是C#中的属性。例如,您可以拥有一个具有少量属性的person对象(读取类)。要获取和设置这些属性的值,请使用此类语法。

public class Person
    {
        private string _name = "";

        public int Id { get; set; }

        public string Name {
            get{
                return "Jonathan";
            }
            set{
                this._name = value;
            }
        }
    }

这里Person有两个属性,即Id和Name。 Id的属性语法使用“自动属性”语法,这意味着有人可以像这样获取和设置此属性:

var person = new Person();
person.Id = "1";//set Id value
//Or get Id value like this
var personId = person.Id;

正在明确设置Name属性。当您请求它时,将返回硬编码值“Jonathan”,并且在设置时,将设置任何值。

您可以在此处详细了解有关属性https://msdn.microsoft.com/en-us/library/x9fsa0sw.aspx

的信息

希望这有帮助。

答案 3 :(得分:0)

第三种形成属性功能。它生活在一个班级里面。例如:

 public string MyProperty { get; set; }

要了解更多信息,您应该查找封装。

答案 4 :(得分:0)

这是一个简写:

这是自动获取和设置,这就是它们被称为自动实现属性的原因。下面这两个定义的属性是一个和一个。同样的。

 public class Constituent{

   public string Name {get; set;} //This is a property, 

   public string Name //This is a property, The value can only be of type **string** because we've assigned it that datatype, which would also be the return type.
   {
     get { return _name; }
     set { _name = value; }
     }
   }

您还可以使用私有,公共和受保护的访问修饰符。
这将决定你是否能得到&设置属性值。

 public string Name {get; private set; }

为了能够访问该属性,您需要实例化Class(Constituent)。
您可以实例化的示例如下:

 var constituent = new Constituent();
 constituent.Name = "Jonathon"; //Setting the value of Name property.
 var Member_Name = constituent.Name; //Storing a value into a variable

希望这能帮到你。 Auto-Implemented Properties