C sharp #003# 面向對象編程基本構件

 飲水思源:金老師的自學網站網站

類的屬性

字段+get/set方法=屬性spa

(以前都是把字段和屬性混着用。。)3d

經典寫法:code

using System;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            var x = new MyTest();
            x.MyValue = "hello";
            Console.WriteLine(x.MyValue);
            // => hello --2019/5/1 10:12:49
            Console.ReadKey();
        }
    }

    // 默認爲internal,程序集內可調用
    // 若是是public,那就是公共的了,任何程序集均可以去調用到它
    public class MyTest
    {
        // 屬性的經典實現方法
        private string _myValue = "";
        public string MyValue
        {
            get
            {
                return _myValue;
            }
            set
            {
                _myValue = value + " --" + DateTime.Now;
            }
        }

    }
}

自動實現屬性(編譯器會自動添加一個私有字段):對象

    class Program
    {
        static void Main(string[] args)
        {
            var x = new MyTest();
            x.MyValue = "hello";
            Console.WriteLine(x.MyValue);
            // => hello
            Console.ReadKey();
        }
    }

    public class MyTest
    {
        public string MyValue { get; set; }

    }

其它玩法(來自原PPT截圖):blog

 

簡化字段/屬性的初始化

using System;
using System.Collections.Generic;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            var x = new MyTest()
            {
                MyValue = "hello"
            }; // 不用專門去寫構造器的,可是無法直接設置對象的私有字段。
            Console.WriteLine(x.MyValue);

            var objs = new List<MyTest>{
                new MyTest { MyValue = "Hello" },
                new MyTest { MyValue = "World" }
            }; // 直接初始化集合對象

            // => hello
            Console.ReadKey();
        }
    }

    public class MyTest
    {
        private string aPrivateValue; 

        public string MyValue
        {
            get;
            set;
        }
    }
}

 

命名空間

相似於Java裏的package,容許嵌套索引

using ConsoleApp1.InnerNamespace; using System;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            var x = new MyTest()
            {
                MyValue = "hello"
            }; // 不用專門去寫構造器的,可是無法直接設置對象的私有字段。
            Console.WriteLine(x.MyValue);
            // => hello
            Console.ReadKey();
        }
    }

    namespace InnerNamespace
    {
        public class MyTest
        {
            private string aPrivateValue;

            public string MyValue
            {
                get;
                set;
            }
        }
    }
}

 

程序集

基本概念(拷貝自PPT):get

  • .NET程序的基本構造塊是「程序集(Assembly)」 。
  • 程序集是一個擴展名爲.dll或.exe的文件。
  • .NET Framework中的各個類,存放在相應的程序集文 件中。

定義本身的程序集(建立一個類庫項目,編譯成ddl):編譯器

namespace MyDdl1
{
    public class MathOpt
    {
        public static int add(int a, int b)
        {
            return a + b;
        }
    }
}

引用本身的程序集(引用ddl):string

using MyDdl1;
using System;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            int result = MathOpt.add(1, 2);
            Console.WriteLine(result); // => 3
        }
    }
}
相關文章
相關標籤/搜索