Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#类属性代码差异_C#_Properties - Fatal编程技术网

C#类属性代码差异

C#类属性代码差异,c#,properties,C#,Properties,我不知道这段代码之间有什么区别 class Person { private string name = "N/A"; public string Name { get { return name; } set { name = value; } } } class Person { public strin

我不知道这段代码之间有什么区别

class Person
{
    private string name = "N/A";

    public string Name
    {
        get
        {
            return name;
        }
        set
        {
            name = value;
        }
    }
}
class Person
{

    public string Name { get; set; }
}
这个密码呢

class Person
{
    private string name = "N/A";

    public string Name
    {
        get
        {
            return name;
        }
        set
        {
            name = value;
        }
    }
}
class Person
{

    public string Name { get; set; }
}

谁能帮我解释一下它们的用途,以及它们何时被使用。优势和劣势。谢谢

这两段代码完全相同。当您编写第二段代码时,c#编译器实际上会将其转换为第一段代码。这只是一种更快的书写和阅读方式

尽管如此,第一个例子还是有它的用处的

例如,如果要在设置名称值之前以任何方式更改名称值,则必须使用第一个示例

例如:

class Person
{
    private string name = "N/A";

    public string Name
    {
        get
        {
            return name;
        }
        set
        {
            name = "My name is:" + value;
        }
    }
}

这两段代码完全相同。当您编写第二段代码时,c#编译器实际上会将其转换为第一段代码。这只是一种更快的书写和阅读方式

尽管如此,第一个例子还是有它的用处的

例如,如果要在设置名称值之前以任何方式更改名称值,则必须使用第一个示例

例如:

class Person
{
    private string name = "N/A";

    public string Name
    {
        get
        {
            return name;
        }
        set
        {
            name = "My name is:" + value;
        }
    }
}
上面是一种编写属性的简捷方法,称为自动实现属性(AIP)。C#编译器将在幕后自动为这些文件创建一个私有字段


上面是一种编写属性的简捷方法,称为自动实现属性(AIP)。C#编译器将在幕后自动为这些文件创建一个私有字段

吹毛求疵:它们不完全相同:你没有访问支持字段的权限。好的是,这是真的,也许我应该把它写成“编译版本”一模一样。吹毛求疵:它们不完全相同:你没有访问支持字段的权限。好的是,也许我应该把它写成“编译版本”它们完全一样