我是C#的新手,我找不到合适的搜索内容。我试图理解这三种语法之间的区别:
public string Topic(){}
public class Topic{}
public string Topic{}
我知道第一个是一个功能而第二个是一个类,但让我困惑的是第三个是什么。
#3
被叫什么以及它是如何使用的?
任何可以提供清晰度的事情。
答案 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