zoukankan      html  css  js  c++  java
  • 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
            }
        }
    }
  • 相关阅读:
    【Network】OVS、VXLAN/GRE、OVN等 实现 Docker/Kubernetes 网络的多租户隔离
    【openStack】Libcloud 如何支持 keystone V3?
    【Network】修改docker启动默认网桥docker0为自定义网桥
    【Network】TCPDUMP 详解
    【Network】OVS基础知识
    【Docker】Docker主机为什么ip nets 查不到网络空间
    sql-in/not in和exists/not exists的区别
    sql-exists和not exists
    oracle-分页查询方案
    mysql-函数FOUND_ROWS()
  • 原文地址:https://www.cnblogs.com/xkxf/p/10798623.html
Copyright © 2011-2022 走看看