码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2019-05-01 11:49:04      阅读:135      评论:0      收藏:0      [点我收藏+]

标签:截图   面向   eric   lin   navbar   inner   扩展名   src   集合   

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

类的属性

字段+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# 面向对象编程基本构件

标签:截图   面向   eric   lin   navbar   inner   扩展名   src   集合   

原文地址:https://www.cnblogs.com/xkxf/p/10798623.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!