首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以只指定一个自动属性的操作(get/set)而另一个操作已实现?

是否可以只指定一个自动属性的操作(get/set)而另一个操作已实现?
EN

Stack Overflow用户
提问于 2014-04-02 00:16:08
回答 1查看 1K关注 0票数 0

我对C#非常陌生,我完全自学过尝试和(很多)错误,所以如果这是个愚蠢的问题,请提前道歉。

到目前为止,在创建类时,我已经把每个变量都公开了,这样我就可以用它们做我想做的事情了。

在阅读了很多关于为什么这是一个坏主意(不是我完全理解它)之后,我现在倾向于写:

代码语言:javascript
复制
public string name { get; set; }

而不是我以前用过的:

代码语言:javascript
复制
public string name;

当它如此简单时,我理解它的速记(我可以理解为什么它对插入断点和使用诸如:公共字符串名称{ get;私有set;} )很有用。

然而,以下各点的简称是什么?

代码语言:javascript
复制
private double _grip;
public double grip
{
    get
    {
        return _grip;
    }
    set
    {
        if (value > 100) { _grip = 100; }
        else if (value < 0) { _grip = 0; }
        else { _grip = value; }
    }
}

每次我想在变量上添加条件时,不得不声明一个私有变量似乎有点笨拙。

我想写的是这样的东西:

代码语言:javascript
复制
public double grip
{
    get;
    set
    {
        if (value > 100) { grip = 100; }
        else if (value < 0) { grip = 0; }
        else { grip = value; }
    }
}

一旦get和set最小化,就把它整齐地放在一行上。但是,这不起作用(虽然我确实得到了我的第一个堆栈溢出错误,这很有趣)。

所以-上面有短手吗?我试着在getterssetters上搜索和阅读了很多信息,却找不到这样的东西。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-02 00:19:33

不,如果您为某个方法(getter或setter)提供了自定义实现,则您的属性不再是自动实现的property.So,您需要继续使用此版本:

代码语言:javascript
复制
private double _grip;
public double grip
{
    get
    {
        return _grip;
    }
    set
    {
        if (value > 100) { _grip = 100; }
        else if (value < 0) { _grip = 0; }
        else { _grip = value; }
    }
}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22799315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档