50594


C#のクラスのメンバの代入ではない初期化の方法が知りたいです。  
c++でいう`class C():t(5),a(3){ }`などいった代入ではない初期化はC#ではどうやるのでしょうか？  
１、クラスの中で初期化することは初期化でしょうか？

[code]

            using System;
            using System.Collections.Generic;
            using System.Linq;
            using System.Text;
            using System.Threading.Tasks;
    
            class Sample
            {
            //    public int x;
            //    public int y;
            //    public string name;
    
                public int x = 10;
                public int y = 20;
                public string name = "未設定";
    
    
                public Sample()
                {
                    Console.WriteLine("引数なし");
    
                }
    
                //public Sample() : this(1, 2, "確認")
                //{
                //    Console.WriteLine("引数なしthis");
    
                //}
    
                //public Sample(int x,int y,string name)
                //{
                //    this.x = x;
                //    this.y = y;
                //    this.name = name;
                //    Console.WriteLine("引数あり");
    
    
                //}
    
            }
    
            class Program
            {    
                static void Main(string[] args)
                {        
    
                    //Sample t = new Sample{1,2,"aa" };
                    Sample t = new Sample();
    
                    Console.WriteLine(t.x);
                    Console.WriteLine(t.y);
                    Console.WriteLine(t.name);
    
    
    
    
                    Console.ReadKey();
                }
            }
    
[/code]


CC BY-SA 4.0
2018-11-24T05:20:32.093
50583
2018-11-24T16:32:42.047
2018-11-24T16:32:42.047
76
question
c#
クラスのメンバ変数の初期化が知りたい。


`class C():t(5),a(3){ }`というスタイルの初期化はC#にはありません。

[code]

        class Sample
        {
            public int x = 10;
    
            public Sample()
            {
            }
    
[/code]

の様にメンバ変数に初期値を代入して書いた場合、

[code]

        class Sample
        {
            public int x;
    
            public Sample()
            {
                x=10;
            }
    
[/code]

とコンパイルされ、コンストラクタの先頭で代入が実施されます。  
（thisで複数回自クラスのコンストラクタを呼ぶ時は、１回しか実行されないように制御してくれてたと思います）

なので「クラスの中で初期化することは初期化」であると思います。


CC BY-SA 4.0
2018-11-24T14:47:05.317
50594
2018-11-24T15:16:57.300
2018-11-24T15:16:57.300
728
728
50583
answer