get和set属性似乎被忽略(C#)

亚历克斯

我正在尝试修改“设置”部分,但这些更改似乎根本没有发生。这是显示相同结果的基本代码:

class Class1
{
    private int num;

    public Class1(int number)
    {
        num = number;
    }
    public int getNumber
    {
        get 
        { 
            return num;
        }
        set
        {
            if (value > 0)
                num = value;
            else
                num = 0;
        } 
    }
}

在这里,我想将任何负值设为0。

class Program
{
    static void Main(string[] args)
    {
        Class1 c1 = new Class1(10);
        Class1 c2 = new Class1(-10);

        Console.WriteLine(c1.getNumber);
        Console.WriteLine(c2.getNumber);
        Console.ReadLine();
    }
}

结果给了我

10 -10

我试过使用

        set
        {
            num = 100;
        }

但是结果仍然没有改变。我已经尝试过对正在使用的书进行仔细检查,但没有发现任何区别。我正在使用Visual Studio 2012(如果有任何意义)。

法哈德·贾比耶夫(Farhad Jabiyev)

您的代码没有调用属性的set部分。因为,您只在调用构造函数。并且在您的构造函数中,您只需为后备字段变量(num设置tha值
同样,按照约定,您的类成员名称也不适当。更改为:


num- > number getNumber-> Number

试试这个:

Class1 c1 = new Class1();
c1.Number = -10; // The set accessor is invoked here
int myNumber = c1.Number; // The get accessor is invoked here


如果要通过构造函数调用set访问器,则将构造函数更改为:

public Class1(int number)
{
      Number = number;
}

然后它将正确调用set访问器:

 Class1 c1 = new Class1(10); // The set accessor will be invoked


并且不要忘记将您的类实现更改为:

class Class1
{
    private int number;

    public int Number
    {
        get { return number; }
        set
        {
            if (value > 0)
                number = value;
            else
                number = 0;
        }
    }

    // If you do provide a constructor (any constructor with any signature), 
    // the parametrless constructor will not be generated
    public Class1()
    {
    }

    public Class1(int number)
    {
        Number = number;
    }
}

从msdn读取信息以获取其他信息。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

没有 Get 和 Set 的 VB 属性声明是否与 C# 相同?

来自分类Dev

如何使用 Roslyn 在 C# 中忽略属性 Getter 和 Setter

来自分类Dev

Spring MessageSource似乎忽略了属性fallbackToSystemLocale

来自分类Dev

种类!似乎忽略了自定义属性

来自分类Dev

具有Get和Private Set的并发字典-C#

来自分类Dev

C#属性和方法

来自分类Dev

C# 中是否可以有额外的(忽略的)属性?

来自分类Dev

更改 dateTime 的 get 和 set 属性

来自分类Dev

C#打印TableEntity属性,但忽略具有属性[IgnoreProperty]的那些属性

来自分类Dev

为什么我的bool属性没有使用C#中的Get / Set接收值?

来自分类Dev

如何使用 C# 只读属性?使用 get set 还是 lambda?

来自分类Dev

如何在C#中准确使用和实现Get和Set方法

来自分类Dev

QUiLoader和忽略的动态属性

来自分类Dev

C# 忽略异常

来自分类Dev

C#和XPath-获取属性?

来自分类Dev

C#属性必需和命名参数

来自分类Dev

C#属性和Aop范例

来自分类Dev

INotifyPropertyChanged和BaseClass C#上的属性

来自分类Dev

C#序列化和属性

来自分类Dev

C#和属性更改通知

来自分类Dev

C#属性和PropertyChanged线程失败

来自分类Dev

C#派生的类和属性

来自分类Dev

忽略的属性和简单的 swift 属性

来自分类Dev

创建与属性的getter和setter挂钩的C#属性

来自分类Dev

关于Java“属性”和C#'属性之间的区别

来自分类Dev

Maven似乎正在忽略Webapp中的源和目标

来自分类Dev

在高图散点图中,似乎忽略了“ endOnTick”和“ stopOnTick”

来自分类Dev

apt-get似乎忽略了指定的软件包版本

来自分类Dev

Get/Set cookie with WebBrowser class C#