是否可以只指定自动属性的一个操作(获取/设置)并实现另一个操作
本文关键字:操作 获取 一个 设置 另一个 实现 属性 是否 | 更新日期: 2023-09-27 17:56:08
我对 C# 很陌生,并且完全是自学成才的,通过试验和(很多)错误,所以如果这是一个愚蠢的问题,请提前道歉。
到目前为止,在创建类时,我几乎只是将每个变量都公开,这样我就可以对它们做我想做的事。
在阅读了很多关于为什么这是一个坏主意(不是我完全理解它)之后,我现在倾向于写:
public string name { get; set; }
而不是我以前使用的:
public string name;
当它如此简单时,我理解速记(我可以看到为什么它对于插入断点和使用以下内容很有用:公共字符串名称 { get; 私有集; }。
但是,以下内容的简写是什么:
private double _grip;
public double grip
{
get
{
return _grip;
}
set
{
if (value > 100) { _grip = 100; }
else if (value < 0) { _grip = 0; }
else { _grip = value; }
}
}
每次我想对变量设置条件时都必须声明一个私有变量似乎有点笨拙。
我想写的是这样的:
public double grip
{
get;
set
{
if (value > 100) { grip = 100; }
else if (value < 0) { grip = 0; }
else { grip = value; }
}
}
一旦获取和设置最小化,就将其整齐地放在一行上。但是这不起作用(尽管我确实遇到了我的第一个堆栈溢出错误,这很有趣)。
那么 - 上面有简写吗?我试图搜索和阅读很多关于getters
和setters
的信息,但找不到这样做的东西。
不,如果您为其中一个方法(getter 或 setter)提供自定义实现,则您的属性不再是自动实现的属性。所以你需要继续使用这个版本:
private double _grip;
public double grip
{
get
{
return _grip;
}
set
{
if (value > 100) { _grip = 100; }
else if (value < 0) { _grip = 0; }
else { _grip = value; }
}
}