• .NET Framework : 4.7.2
  •        IDE : Visual Studio Community 2019
  •         OS : Windows 10 x64
  •     typesetting : Markdown

基础代码

code

using System;

namespace ConsoleApp
{
    class MyClass
    {
        private readonly string str;
        public MyClass()
        {
            str = @"MyClass() 构造函数";
            Console.WriteLine(str);
        }
        public MyClass(int i) : this()
        {
            str = @"MyClass(int i) 构造函数";
            Console.WriteLine(str);
        }
    }

    class Program
    {

        static void Main(string[] args)
        {
            var a = new MyClass(1);

            Console.ReadKey();
        }
    }
}

result

MyClass() 构造函数
MyClass(int i) 构造函数

思考与尝试 - 一个构造函数可以多次初始化readonly字段吗?

code

using System;

namespace ConsoleApp
{
    class MyClass
    {
        private readonly string str;
        public MyClass()
        {
            str = @"MyClass() 构造函数";
            Console.WriteLine(str);
        }
        public MyClass(int i) : this()
        {
            // 第一次
            str = @"MyClass(int i) 构造函数";
            Console.WriteLine(str);

            // 第二次
            str = "asd";
            Console.WriteLine(str);
        }
    }

    class Program
    {

        static void Main(string[] args)
        {
            var a = new MyClass(1);

            Console.ReadKey();
        }
    }
}

result

MyClass() 构造函数
MyClass(int i) 构造函数
asd

虽然迷惑于尝试这个能干什么,但是很有趣呢。

resource

  • [文档] docs.microsoft.com/zh-cn/dotnet/csharp
  • [规范] github.com/dotnet/docs/tree/master/docs/standard/design-guidelines
  • [源码] referencesource.microsoft.com
  • [ IDE ] visualstudio.microsoft.com/zh-hans
  • [.NET Core] dotnet.github.io


感恩曾经帮助过 心少朴 的人。
C#优秀,值得学习。.NET Core具有跨平台的能力,值得关注。
Console,WinForm,WPF,ASP.NET,Azure WebJob,WCF,Unity3d,UWP可以适当地了解。
注:此文是自学笔记所生,质量中下等,故要三思而后行。新手到此,不可照搬,应先研究其理象数,待能变通之时,自然跳出深坑。

欢迎关注微信公众号:悟为生心

C#基础 readonly 构造函数初始化readonly字段_c#