我在问初学者水平的问题。 尽管我在MVC工作,但我对一个简单的概念感到困惑,那就是“属性”。 我已经解决了许多问题,但是肯定有一个疑问,无法解决。

实际上,c#属性用于获取值并将其设置为私有字段。

喜欢

Public class MyClass
{
   private int number;
  public  int Number{
 get{ return this.number;}
 set{ number=Value }
     }
}

class Program
{
    static void Main()
    {
    MyClass example = new MyClass();
    example.Number = 5; // set { }
    Console.WriteLine(example.Number); // get { }
    }
}

现在,该值也分配给属性,也分配给变量。 对? 现在,这是我的疑问:当我们在MVc结构的模型中创建属性时,我们只有

public int Number{get;set;}

如果可以使用,那么为什么我们不必要地再创建一个私有访问说明符字段。 如果封装是这样做的原因或隐藏数据,那么为什么不在MVC的模型中?

实际上,在上面的类示例中,我只能使用

Console.WriteLine(example.number); 

宣布public

那么在这里创建属性有什么用?

===============>>#1 票数:2 已采纳

可以像在第一个示例中一样直接使用属性存储和从后备字段(在您的情况下为number中检索值。 但是,属性获取器和设置器是可以随意使用的普通代码块。 因此,您不必分配支持字段,但是也可以从吸气剂中的另一个属性派生某个属性的值,例如

public int NumberTimesTwo
{
    get
    {
        return Number * 2;
    }
}

但是,由于常见的情况是要有一个属性来检索并分配后备字段的值,因此可以使用以下快捷方式:

public int Number { get; set; }

在这种情况下,编译器会自动创建一个私有后备字段,该属性将在getter中检索并在setter中分配,因此代码等效于以下内容,但键入起来却很少:

private int _number;
public into Number
{
    get
    {
        return _number;
    }
    set
    {
        _number = value;
    }
}

由于支持字段也是私有的,因此您不能直接从类外部访问它。

===============>>#2 票数:2

private int myVar;

public int MyProperty
{
    get { return myVar; }
    set { myVar = value; }
}

您正在使用MyProperty实现Encapsulation ,该MyPropertypublic以访问myVar ,该myVarprivate并且只能在定义的块(即您的类)中访问,而不能在其外部访问。

顺便说一句,此质量检查不能以什么方式回答您的问题? 尝试仔细阅读以获取更多参考。

  ask by Sweetie translate from so

未解决问题?本站智能推荐: