カテゴリー
C

独習C#第3版、P456 名前空間の例

using System;

namespace NMSSisokuenzan
{
    class SisokuEnzan
    {
        int firstNumber;
        int secondNumber;
        int wa;
        int sa;
        int seki;
        double waru;
        public SisokuEnzan(int x, int y)
        {
            firstNumber = x;
            secondNumber = y;
        }
        public void Kasan()
        {
            wa = firstNumber + secondNumber;
        }
        public void Genzan()
        {
            sa = firstNumber - secondNumber;
        }
        public void Kakezan()
        {
            seki = firstNumber * secondNumber;
        }
        public void Warizan()
        {
            waru = (double)firstNumber / secondNumber;
        }
        public int PKasan
        {
            get
            {
                return wa;
            }
        }
        public int PGenzan
        {
            get
            {
                return sa;
            }
        }
        public int PKakezan
        {
            get
            {
                return seki;
            }
        }

        public double PWarizan
        {
            get
            {
                return waru;
            }
        }
    }
}
namespace SisokuEnzanDemo
{ 
    class EnzanDemo
    {
        static void Main()
        {
            NMSSisokuenzan.SisokuEnzan obj = new NMSSisokuenzan.SisokuEnzan(100, 200);
            obj.Kasan(); obj.Genzan(); obj.Kakezan(); obj.Warizan();
            Console.WriteLine(obj.PKasan);
            Console.WriteLine(obj.PGenzan);
            Console.WriteLine(obj.PKakezan);
            Console.WriteLine(obj.PWarizan);
        }
    }
    
}

クラスの定義部分と実行部分を別の名前空間にして、実行部分では名前空間で修飾して、クラスを使っています。すべてが一個のファイルになっています。

using System;
namespace NMSSisokuenzan
{
    class SisokuEnzan
    {
        int firstNumber;
        int secondNumber;
        int wa;
        int sa;
        int seki;
        double waru;
        public SisokuEnzan(int x, int y)
        {
            firstNumber = x;
            secondNumber = y;
        }
        public void Kasan()
        {
            wa = firstNumber + secondNumber;
        }
        public void Genzan()
        {
            sa = firstNumber - secondNumber;
        }
        public void Kakezan()
        {
            seki = firstNumber * secondNumber;
        }
        public void Warizan()
        {
            waru = (double)firstNumber / secondNumber;
        }
        public int PKasan
        {
            get
            {
                return wa;
            }
        }
        public int PGenzan
        {
            get
            {
                return sa;
            }
        }
        public int PKakezan
        {
            get
            {
                return seki;
            }
        }

        public double PWarizan
        {
            get
            {
                return waru;
            }
        }
    }
}
using System;

namespace SisokuEnzanDemo
{ 
    class EnzanDemo
    {
        static void Main()
        {
            NMSSisokuenzan.SisokuEnzan obj = new NMSSisokuenzan.SisokuEnzan(100, 200);
            obj.Kasan(); obj.Genzan(); obj.Kakezan(); obj.Warizan();
            Console.WriteLine(obj.PKasan);
            Console.WriteLine(obj.PGenzan);
            Console.WriteLine(obj.PKakezan);
            Console.WriteLine(obj.PWarizan);
        }
    }
    
}

クラスの定義部分と実行部分を別の名前空間にして、実行部分では名前空間で修飾して、クラスを使っています。今回はファイルを分けました。でも、名前空間でクラス名を修飾は同じ。

using System;
using NMSSisokuenzan;

namespace SisokuEnzanDemo
{ 
    class EnzanDemo
    {
        static void Main()
        {
            SisokuEnzan obj = new SisokuEnzan(100, 200);
            obj.Kasan(); obj.Genzan(); obj.Kakezan(); obj.Warizan();
            Console.WriteLine(obj.PKasan);
            Console.WriteLine(obj.PGenzan);
            Console.WriteLine(obj.PKakezan);
            Console.WriteLine(obj.PWarizan);
        }
    }  
}

クラスの定義部分と実行部分を別の名前空間にして、別ファイルです。今回は名前空間でクラスを修飾で無くて、先頭部分にusing使うことで、修飾を省いてます。クラスの定義部分は同じです。これをusingディレクティブというようです。

using System;
//using NMSSisokuenzan;
namespace SisokuEnzanDemo
{
    using MyNS = NMSSisokuenzan.SisokuEnzan;
    class EnzanDemo
    {
         
        static void Main()
        {
            MyNS objMyNS = new MyNS(100, 200);

            //SisokuEnzan obj = new SisokuEnzan(100, 200);
            objMyNS.Kasan(); objMyNS.Genzan(); objMyNS.Kakezan(); objMyNS.Warizan();
            Console.WriteLine(objMyNS.PKasan);
            Console.WriteLine(objMyNS.PGenzan);
            Console.WriteLine(objMyNS.PKakezan);
            Console.WriteLine(objMyNS.PWarizan);
        }
    }  
}

 using ディレクティブのもう一つの形ということで、MyNSはNMSSisokuenzan.SisokukEnzanのエイリアスというようです。少し混乱気味です。”(-“”-)”

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

inserted by FC2 system