gpt4 book ai didi

c# - 自动属性在 c# 中不起作用

转载 作者:太空狗 更新时间:2023-10-29 21:08:13 24 4
gpt4 key购买 nike

各位 friend 大家好。我有一个关于自动属性的小问题。一般来说,我是编程新手,我才刚刚开始学习类和对象。当我尝试使用自动属性时,该字段不会暴露。 (不确定这是否是正确的表达方式)查看两个动物类别中属性的注释部分,以了解我在说什么。

现在我有这个动物类

public class Animals
{
//fields
private string name;

public Animals(string name)
{
this.name = name;
}

// default constructor
public Animals()
{ }

//This is the problematic portion
public string Name { get; set; }


public void Bark()
{
Console.WriteLine("{0} said WoWOW", name);
}

}

这是我的主程序类

class Program
{
static void Main(string[] args)
{

Console.WriteLine("Enter name: ");
string name = Console.ReadLine();
Animals dog = new Animals(name);
dog.Bark();

Animals cat = new Animals();
Console.WriteLine("Enter second name: ");
cat.Name = Console.ReadLine();
cat.Bark();


}
}

输出如下。 最后一行是我的问题

    Enter name:
bob
bob said WoWOW
Enter second name:
sarah
said WoWOW //sarah is missing here

但是,当我将属性从 {get;set} 更改为类中的完整版本时。它输出正确的输出。

编辑代码

public class Animals
{
//fields
private string name;

public Animals(string name)
{
this.name = name;
}

public Animals()
{ }

//apparently this is the correct way of making properties
public string Name
{
get { return name; }
set { name = value; }
}


public void Bark()
{
Console.WriteLine("{0} said WoWOW", name);
}

}

输出://Sarah出现在最后一行

    Enter name:
bob
bob said WoWOW
Enter second name:
sarah
sarah said WoWOW

我的问题是:为什么在使用自动属性时我没有得到我想要的输出,但是当我完整地写属性时我却得到了我想要的结果。感谢您查看我的问题。希望不会太久! ;]

最佳答案

这会起作用:

public class Animals
{
//fields
private string name; // <-- You don't need it when you have auto properties

public Animals(string name)
{
Name = name;// <-- Using auto property
}

public string Name { get; set; }

public void Bark()
{
Console.WriteLine("{0} said WoWOW", Name);//<-- Using auto property
}

}

另外,你应该看看 What are Automatic Properties in C# and what is their purpose?Auto-Implemented Properties (C# Programming Guide)


旁注 1: 如果您没有其他构造函数,则空的、无参数的公共(public)构造函数是无用的。正如乔指出的那样,如果在您的示例中删除它,您将无法调用 var a = new Animals();

旁注 2:用单数名词命名您的类非常常见,这里是 Animal

关于c# - 自动属性在 c# 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36551540/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com