gpt4 book ai didi

c# - C# 3 中的自动属性 ​​- 如果我为 set 声明一个主体,是否必须为 get 声明一个主体?

转载 作者:太空狗 更新时间:2023-10-29 19:50:12 25 4
gpt4 key购买 nike

我使用的是 VS 2008,在项目的属性页中我看到我的目标是 .Net 3.5。

这是我在尝试编译时遇到的错误:

AMSDataModels.Vehicle.VIN.get' must declare a body because it is not marked abstract, extern, or partial

代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace AMSDataModels
{
public class Vehicle
{
//NodeID for datastore persistance
public Guid NodeID { get; set; }

public string VIN { get;
set {
if (value.Length != 17) throw new ArgumentOutOfRangeException("VIN", "VIN must be 17 characters");
} }

public string Make { get; set; }
public string Model { get; set; }
}
}

如果我从 set 中剥离 body,那么它只是:

public string VIN { get; set; }

一切正常,但我无法在设置时检查 VIN。

有没有人建议如何解决这个问题或更好的方法来解决手头的问题?

我真的很喜欢速记符号 - 但验证输入的合法性也很重要!

最佳答案

如果要在 set 中添加逻辑,则还需要将其添加到 get 中。请注意,在您的集合中,您实际上并未设置任何值?

添加一个支持字段,

private string _vin;

并在 get 中返回它。

public string VIN
{
get { return _vin; }
set
{
if (value.Length != 17)
throw new ArgumentOutOfRangeException("VIN", "VIN must be 17 characters");
else
_vin = value;
}
}

关于c# - C# 3 中的自动属性 ​​- 如果我为 set 声明一个主体,是否必须为 get 声明一个主体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1121940/

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