在没有函数或类语法的情况下使用C#方括号

在没有函数或类语法的情况下使用C#方括号,c#,syntax,C#,Syntax,我是C#的新手,找不到合适的搜索对象。我试图理解这三种语法之间的区别: 公共字符串主题(){} 公共类主题{} 公共字符串主题{} 我知道第一个是函数,第二个是类,但让我困惑的是第三个是什么 问题 什么叫#3,如何使用 任何能提供清晰的信息都可以。如果正确使用,第三个是属性。它基本上是一个内置getter和setter的变量 public string Topic {get; set;} 这将自动创建一个字符串变量,允许您通过Topic=“new Topic”直接设置或获取 允许公共访问读取该

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

  • 公共字符串主题(){}
  • 公共类主题{}
  • 公共字符串主题{}
  • 我知道第一个是函数,第二个是类,但让我困惑的是第三个是什么

    问题 什么叫
    #3
    ,如何使用


    任何能提供清晰的信息都可以。

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

    public string Topic {get; set;}
    
    这将自动创建一个字符串变量,允许您通过Topic=“new Topic”直接设置或获取

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

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

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

    第三种形式是属性函数。它住在一个班级里。例如:

     public string MyProperty { get; set; }
    

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

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

    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;
    
    public string Topic { get; set; }
    
    正在显式设置Name属性。当您请求时,将返回硬编码值“Jonathan”,设置时,将设置分配的任何值

    您可以在此处阅读有关属性的更多信息


    希望这有帮助。

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

    var person = new Person();
    person.Id = "1";//set Id value
    //Or get Id value like this
    var personId = person.Id;
    
    public string Topic { get; set; }
    
    这相当于:

    private string _topic;
    
    public string Topic
    {
        get { return _topic; }
        set { _topic = value; }
    }
    
    它应该用来保存对象的内部状态

    它可以是只读属性,并且只能使用getter:

    public string Topic { get; }
    
    或仅使用setter:

    public string Topic { set; }
    
    您还可以在getter和setter中应用可访问性修改器,例如:

    public string Topic { protected get; private set; }
    
    这是一个速记:

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

     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; }
         }
       }
    
    您还可以在其上使用访问修饰符private、public和protected
    这将决定您是否可以获取并设置属性值

     public string Name {get; private set; }
    
    为了能够访问属性,您需要实例化类(组成部分)
    如何实例化的示例如下:

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

    希望这对你有帮助

    这是一个公共财产检查第一个例子。第三个是一个财产。它通常伴随着一个
    get
    块和一个
    set
    块。value是一个关键字,或者我可以将其更改为我想要的任何名称吗?该值只能是string类型,因为我们已经为其分配了该数据类型,该数据类型也将是返回类型。它是一个关键字。