如果是只读的,可以在C#中使用公共变量吗?

Edw*_*uay 17 c# properties

C#语法糖制作属性的方法是否存在内部差异:

public string FirstName { get; set; }
Run Code Online (Sandbox Code Playgroud)

并只是像这样制作公共变量:

public string LastName;
Run Code Online (Sandbox Code Playgroud)

我认为第一种方式是首选,第二种方式是可以避免的.但是,我经常看到使用这种类型的readonly属性,它是上面第二种类型的形式:

public readonly string InternalCode;
Run Code Online (Sandbox Code Playgroud)

这是创建只读属性的最佳实践方法吗?

using System;

namespace TestProps
{
    class Program
    {
        static void Main(string[] args)
        {
            Customer customer = new Customer();
            customer.FirstName = "Jim";
            customer.LastName = "Smith";
            customer.Show();
        }
    }

    class Customer
    {
        public string FirstName { get; set; } //prefered
        public string LastName; //avoid
        public readonly string InternalCode; //???

        public Customer()
        {
            InternalCode = "234729834723984";
        }

        public void Show()
        {
            Console.WriteLine("{0}, {1} ({2})", LastName, FirstName, InternalCode);
            Console.ReadLine();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Dir*_*mar 17

既然他没有回答(还),还没有其他人引用这个:Jon Skeet在这个主题上有一篇很棒的文章,对他的书C#进行了深入的修改(给Jon的信用):

为什么属性很重要