VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 编程开发 > c#教程 >
  • C#教程之C#教程之C# readonly关键字

本站最新发布   C#从入门到精通
试听地址  
https://www.xin3721.com/eschool/CSharpxin3721/

readonly是一个修饰字段的关键字。被它修饰的字段只有在初始化或者构造函数中才能够赋值。

   class Program
    {
        public static readonly List<string> DefaultPracticeAreas = new List<string>() { "Criminal Law",
            "Estate Planning", "Family Law", "Litigation", "Personal Injury", "Real Estate", "Transactional",
            "Unassigned" };
        public static readonly string aString = "abbb";
        public static readonly List<Person> Personlist = new List<Person>() { new Person(1, "aaa"), new Person(2, "bbb") };

        static void Main(string[] args)
        {
            DefaultPracticeAreas.ElementAt(0) = "111";
            aString = "ccc";

            Personlist.ElementAt(0).age = 0;
            Console.WriteLine(Personlist.ElementAt(0).age);

            Console.ReadLine();
        }
    }
    public class Person
    {
        public int age { get; set; }
        public string name { get; set; }
        public Person(int a, string n) { age = a; name = n; }
    }

对于下面的string型的list 或者纯string 当我们尝试去修改它的值,会发现错误:

DefaultPracticeAreas.ElementAt(0) = "111";
aString = "ccc";

A static readonly field cannot be assigned to (except for a static constructor or a variable initializer)

但是对于引用型变量的list来说 我们还是可以修改其中某个变量的值:

Personlist.ElementAt(0).age = 0;
Console.WriteLine(Personlist.ElementAt(0).age);

Personlist的第一个person元素的age被成功的修改成了0,这说明readonly对于引用类型变量,它限制的不可修改性是针对于引用类型的指针,至于地址里面存放的值,是可以修改的。

编辑于 2017-08-23
相关教程