C sharp #003# 面向对象编程基本构件

Posted xkxf

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C sharp #003# 面向对象编程基本构件相关的知识,希望对你有一定的参考价值。

 饮水思源:金老师的自学网站

类的属性

字段+get/set方法=属性

(之前都是把字段和属性混着用。。)

经典写法:

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截图):

技术图片

 

简化字段/属性的初始化

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):

  • .NET程序的基本构造块是“程序集(Assembly)” 。
  • 程序集是一个扩展名为.dll或.exe的文件。
  • .NET Framework中的各个类,存放在相应的程序集文 件中。

定义自己的程序集(创建一个类库项目,编译成ddl):

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

引用自己的程序集(引用ddl):

using MyDdl1;
using System;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            int result = MathOpt.add(1, 2);
            Console.WriteLine(result); // => 3
        }
    }
}

 

以上是关于C sharp #003# 面向对象编程基本构件的主要内容,如果未能解决你的问题,请参考以下文章

C#003.面向对象OOP

C#003.面向对象OOP

第二个月课堂003讲解python实战之基本操作_高级讲师肖sir

003C#变量

C sharp #005# 对象与对象变量

跟尹成前辈学C/C++ 003