简体   繁体   中英

Understanding different ways of using accessors

For an object sellprint declared as static in the class

private static string sellprint  = "";

public string Sellprint
{
    get { return sellprint; }            
}
public void SetSellprint(string x)
{
      sellprint = x;
}

How is this different from

public string Sellprint
{
    get; set;
}

internally.

I could not find any examples of code 1 on msdn. what does it translate into?

The compiler creates a getter method for your property in the first code that returns the value of sellprint field because you implement only the getter method.In the second code, both getter and setter methods creating by compiler and also the backing-field .That's the difference.

You can verify that using ILDASM.exe :

First, consider this code:

class Foo
{
    private string _value;

    public string Value
    {
        get { return _value; }
    }

    public void SetValue(string str)
    {
        _value = str;
    }
}

在此处输入图片说明

As you can see there is only one method generated by compiler which is get_Value .

If we change it like this and make the Value an auto-implemented property:

class Foo
{
    public string Value { get; set; }
}

在此处输入图片说明

You can see that compiler creates both getter ( get_Value ) and setter ( set_Value ) method and also create a private backing field for the property.

There is no pros or cons about the functionality except in the second code you are doing the same work with less code.

1) should not work because there is no sellprint - assuming you have a field named sellprint and just forgot in your code snippet, you provide a get accessors and a method instead of the set accessors, which is kinda strange.

2) will create the field required automatically (and will not tell you the name, so you cannot accidentally use it)

There is not difference between those two though.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM