【发布时间】:2021-10-13 22:18:45
【问题描述】:
public class Product : BaseEntity
{
public string ProductTitle { get; set; }
public string ProductDescription { get; set; }
private readonly DateTime _dateTime;
public DateTime ProductExpirationDate
{
get { return _dateTime; }
set
{
if (DateTime.Now >= _dateTime)
{
Console.WriteLine("Product past the expiration date!");
}
}
}
}
/***************/
class Program
{
static void Main(string[] args)
{
Product product = new Product
{
Id = 1,
ProductTitle = "Milk",
ProductDescription = "Description of milk",
ProductExpirationDate = Convert.ToDateTime("08/09/2011 04:05:02")
};
Console.WriteLine(product.Id);
Console.WriteLine(product.ProductTitle);
Console.WriteLine(product.ProductDescription);
Console.WriteLine(product.AddDate);
Console.WriteLine(product.ProductExpirationDate);
}
}
除了“ProductExpirationDate”之外,一切都很好。我正在练习 OOP。但是我在 Program.cs 中给出的值不会发送到 Product.cs。它说“字段'Product.dateTime'从未分配给,并且将始终具有其默认值”
【问题讨论】:
-
需要在setter中添加赋值_dateTime = value
-
您在
ProductExpirationDate设置器中缺少_dateTime = value;。 -
该字段也不能只读
标签: c# oop properties field variable-assignment