diff --git a/Study.DelegateSeries.Core/DeclareCalculatroDelegate.cs b/Study.DelegateSeries.Core/DeclareCalculatroDelegate.cs
new file mode 100644
index 0000000..8839b5a
--- /dev/null
+++ b/Study.DelegateSeries.Core/DeclareCalculatroDelegate.cs
@@ -0,0 +1,14 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Study.DelegateSeries.Core
+{
+    /// <summary>
+    /// 计算器:计算委托
+    /// </summary>
+    /// <param name="numberA">参数A</param>
+    /// <param name="numberB">参数B</param>
+    /// <returns>计算结果</returns>
+    public delegate decimal CalculatorDelegate(decimal numberA, decimal numberB);
+}
diff --git a/Study.DelegateSeries.Core/DeclareDelegate.cs b/Study.DelegateSeries.Core/DeclareDelegate.cs
index 2ab73d7..3a7e7c1 100644
--- a/Study.DelegateSeries.Core/DeclareDelegate.cs
+++ b/Study.DelegateSeries.Core/DeclareDelegate.cs
@@ -2,32 +2,26 @@
 using System.Collections.Generic;
 using System.Text;
 
+//命名空间同级:调用方只需要引用定义类库就能使用;不需要使用Uing语句引入定义委托的命名空间。
+public delegate string NamespaceLevelDelegate();
+
+public delegate string ToLowerDelegate(string source);
+
 namespace Study.DelegateSeries.Core
 {
-    
-    /// <summary>
-    /// 显示类型名 委托
-    /// </summary>
-    /// <returns>类型名</returns>
-    public delegate string ShowTypeNameDelegate();
+    //类同级:最常用和推荐的,可见范围与使用方法与类相同。
+    public delegate string ClassLevelDelegate();
 
-    /// <summary>
-    /// 显示人名 委托
-    /// </summary>
-    /// <returns>人名</returns>
-    public delegate string ShowPersonName();
+    public class DeclareDelegateDemo
+    {
+        //类内部方法同级:可见范围与使用方法与类中方法相似,调用方须先调用类,后再调用委托。
+        public delegate string MethodLevelDelegate();
 
-    /// <summary>
-    /// 计算器:计算委托
-    /// </summary>
-    /// <param name="numberA">参数A</param>
-    /// <param name="numberB">参数B</param>
-    /// <returns>计算结果</returns>
-    public delegate decimal CalculatorDelegate(decimal numberA,decimal numberB);
+        public string GetClassName()
+        {
+             //方法体内:不允许定义委托
 
-    /// <summary>
-    /// 返回整形无参 委托
-    /// </summary>
-    /// <returns>整形数字</returns>
-    public delegate int IntegerDelegate();
+            return "DeclareDelegateDemo";
+        }
+    }
 }
diff --git a/Study.DelegateSeries.Core/DeclarePersonDelegate.cs b/Study.DelegateSeries.Core/DeclarePersonDelegate.cs
new file mode 100644
index 0000000..41e96d0
--- /dev/null
+++ b/Study.DelegateSeries.Core/DeclarePersonDelegate.cs
@@ -0,0 +1,18 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Study.DelegateSeries.Core
+{
+    /// <summary>
+    /// 显示类型名 委托
+    /// </summary>
+    /// <returns>类型名</returns>
+    public delegate string ShowTypeNameDelegate();
+
+    /// <summary>
+    /// 显示人名 委托
+    /// </summary>
+    /// <returns>人名</returns>
+    public delegate string ShowPersonName();
+}
diff --git a/Study.DelegateSeries.Core/Demo.cs b/Study.DelegateSeries.Core/Demo.cs
deleted file mode 100644
index 42d18c0..0000000
--- a/Study.DelegateSeries.Core/Demo.cs
+++ /dev/null
@@ -1,24 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace Study.DelegateSeries.Core
-{
-
-    public class Demo
-    {
-        public int Square(int number)
-        {
-            return number * number;
-        }
-
-        public int UseDelegate()
-        {
-            IntegerDelegate intDelegate = delegate () { return 5; };
-
-            var total = Square(intDelegate());
-
-            return total;
-        }
-    }
-}
diff --git a/Study.DelegateSeries.Core/StudyDelegate.cs b/Study.DelegateSeries.Core/InstanceDelegate.cs
similarity index 52%
rename from Study.DelegateSeries.Core/StudyDelegate.cs
rename to Study.DelegateSeries.Core/InstanceDelegate.cs
index 4a1fef3..b548c55 100644
--- a/Study.DelegateSeries.Core/StudyDelegate.cs
+++ b/Study.DelegateSeries.Core/InstanceDelegate.cs
@@ -1,33 +1,15 @@
 using Study.DelegateSeries.Core.Calculator;
 using System;
+using System.Collections.Generic;
+using System.Text;
 
 namespace Study.DelegateSeries.Core
 {
     /// <summary>
-    /// 委托学习
-    /// 使用:定义委托、实例化委托、调用委托
+    /// 实例化委托
     /// </summary>
-    public class StudyDelegate
+    public class InstanceDelegate
     {
-        /*
-         * 委托系列学习
-         * 1、委托概念
-         * 2、定义与使用委托
-         * 3、多播委托
-         * 4、使用匿名方法
-         * 5、使用Lamda表达式
-         * 6、委托使用场景
-         * 7、委托与事件
-         * 8、委托与接口
-         * 9、其它
-         * 10、总结
-         */
-
-        #region 定义委托,DeclareDelegate类
-        #endregion
-
-        #region 实例化委托
-
         /// <summary>
         /// 基础语法
         /// (c#1.0 开始提供)
@@ -55,7 +37,7 @@ namespace Study.DelegateSeries.Core
         public CalculatorDelegate AnonymousInstance()
         {
             //c# 2.0基础语法
-            CalculatorDelegate operation = delegate (decimal a,decimal b) { return (a * b) * (a * b); };
+            CalculatorDelegate operation = delegate (decimal a, decimal b) { return (a * b) * (a * b); };
             return operation;
         }
 
@@ -65,37 +47,14 @@ namespace Study.DelegateSeries.Core
         /// </summary>
         public CalculatorDelegate LambdaInstance()
         {
-            CalculatorDelegate operation = (decimal a,decimal b)=> { return a * a + b * b + 2 * a * b; };
+            CalculatorDelegate operation = (decimal a, decimal b) => { return a * a + b * b + 2 * a * b; };
             //自动推断
-            CalculatorDelegate operation2 = (a,b) => { return a * a + b * b + 2 * a * b; };
+            CalculatorDelegate operation2 = (a, b) => { return a * a + b * b + 2 * a * b; };
 
             //{}只有一句时的简写
-            CalculatorDelegate operation3 = (a, b) => a * a + b * b + 2 * a * b ;
+            CalculatorDelegate operation3 = (a, b) => a * a + b * b + 2 * a * b;
 
             return operation;
         }
-
-        #endregion
-
-        #region 调用委托
-        #endregion
-
-        #region 闭包
-        #endregion
-
-        #region 多播委托
-        #endregion
-
-        #region 泛型委托
-        #endregion
-
-        #region 内置委托
-        #endregion
-
-        #region 委托与事件
-        #endregion
-
-        #region 委托与接口
-        #endregion
     }
 }
diff --git a/Study.DelegateSeries.Core/InvokDelegate.cs b/Study.DelegateSeries.Core/InvokDelegate.cs
new file mode 100644
index 0000000..cb60bb6
--- /dev/null
+++ b/Study.DelegateSeries.Core/InvokDelegate.cs
@@ -0,0 +1,14 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Study.DelegateSeries.Core
+{
+    /// <summary>
+    /// 调用委托
+    /// </summary>
+    public class InvokDelegate
+    {
+
+    }
+}
diff --git a/Study.DelegateSeries.Core/StaticClass.cs b/Study.DelegateSeries.Core/StaticClass.cs
new file mode 100644
index 0000000..d42ecd2
--- /dev/null
+++ b/Study.DelegateSeries.Core/StaticClass.cs
@@ -0,0 +1,14 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Study.DelegateSeries.Core
+{
+    public static class StaticClass
+    {
+        public static string GetName()
+        {
+            return "StaticClass";
+        }
+    }
+}
diff --git a/Study.DelegateSeries.Test/DeclareDelegateTest.cs b/Study.DelegateSeries.Test/DeclareDelegateTest.cs
new file mode 100644
index 0000000..d30c2d2
--- /dev/null
+++ b/Study.DelegateSeries.Test/DeclareDelegateTest.cs
@@ -0,0 +1,11 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using Xunit;
+
+namespace Study.DelegateSeries.Test
+{
+    public class DeclareDelegateTest
+    {
+    }
+}
diff --git a/Study.DelegateSeries.Test/GlobalDelegateTest.cs b/Study.DelegateSeries.Test/GlobalDelegateTest.cs
new file mode 100644
index 0000000..0325f6d
--- /dev/null
+++ b/Study.DelegateSeries.Test/GlobalDelegateTest.cs
@@ -0,0 +1,18 @@
+using System;
+using Xunit;
+
+namespace Study.DelegateSeries.Test
+{
+    public class GlobalDelegateTest
+    {
+        [Fact]
+        public void Test1()
+        {
+            //��ʹ��using�������ֿռ䣬���Ӷ��������򼯵����ü��ɡ�
+
+            NamespaceLevelDelegate global = new NamespaceLevelDelegate(() => string.Empty);
+
+            Assert.NotNull(global.Target);
+        }
+    }
+}
diff --git a/Study.DelegateSeries.Test/InstanceDelagateTest.cs b/Study.DelegateSeries.Test/InstanceDelagateTest.cs
new file mode 100644
index 0000000..7e1ef2f
--- /dev/null
+++ b/Study.DelegateSeries.Test/InstanceDelagateTest.cs
@@ -0,0 +1,165 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+using Xunit;
+
+using Study.DelegateSeries.Core;
+
+namespace Study.DelegateSeries.Test
+{
+    /// <summary>
+    /// 实例化委托
+    /// 委托使用:声明 -> 实例化 ->调用 
+    /// 类在实例化之后叫对象或实例,但委托在实例化后仍叫委托。
+    /// </summary>
+    public class InstanceDelagateTest
+    {
+        #region 单实例委托
+        #region 命名委托
+        /// <summary>
+        /// 实例化命名委托语法:委托名  委托对象名 = new 委托名 (方法名);
+        /// 参数:1、方法签名与委托完全匹配(返回值、参数:个数、顺序、类型)
+        ///       2、方法名既可以是静态方法的名称,也可以是实例方法的名称
+        /// </summary>
+        [Fact]
+        public void NamedDelegate_UseNewKeyword_Test()
+        {
+            //使用New关键字:和实例化类相似 new 委托名(方法名),不同的是:参数为 匹配委托签名的方法名称
+
+            ClassLevelDelegate classDelegate = new ClassLevelDelegate(GetClassName);
+
+            Assert.Equal("GetClassName", classDelegate.Method.Name);
+        }
+
+        [Fact]
+        public void NamedDelegate_InstanceMethed_Test()
+        {
+            ClassLevelDelegate classDelegate = new ClassLevelDelegate(GetClassName);
+
+            Assert.Equal("GetClassName", classDelegate.Method.Name);
+        }
+
+        [Fact]
+        public void NamedDelegate_StaticMethed_Test()
+        {
+            ClassLevelDelegate classDelegate = new ClassLevelDelegate(StaticClass.GetName);
+
+            Assert.Equal("GetName", classDelegate.Method.Name);
+        }
+
+        [Fact]
+        public void NamedDelegate_EllipsisNewKeyword_Test()
+        {
+            ClassLevelDelegate classDelegate = this.GetClassName;
+
+            Assert.Equal("GetClassName", classDelegate.Method.Name);
+        }
+
+        [Fact]
+        public void NamedDelegate_ChangeInstanceMethed_Test()
+        {
+            ClassLevelDelegate classDelegate = this.GetClassName;
+            Assert.Equal("GetClassName", classDelegate.Method.Name);
+
+            //改变赋值:由于委托是引用类型,给它赋新值,则为改变包含在委托变量中的方法地址引用,旧的引用会被垃圾回收器回收。
+            classDelegate = StaticClass.GetName;
+            Assert.Equal("GetName", classDelegate.Method.Name);
+        }
+
+
+        #endregion
+
+        #region  匿名委托
+        //匿名方法(Anonymous Methods)是没有名称只有主体的方法,提供了一种传递代码块作为委托参数的技术。
+        //匿名方法不需要指定返回类型,返回类型是从方法主体内的 return 语句推断的
+        //语法:委托类型 委托实例名 = delegate(参数){ 方法体,可以带retun 语句};
+        [Fact]
+        public void AnonymousMethodsDelegate_Test()
+        {
+            ToLowerDelegate demo = new ToLowerDelegate(delegate (string source) { return source.ToLower(); });
+
+            Assert.StartsWith("<AnonymousMethods", demo.Method.Name);
+        }
+
+        /// <summary>
+        /// 省略new 委托名()
+        /// </summary>
+        [Fact]
+        public void AnonymousMethodsDelegate_EllipsisNewKeyword_Test()
+        {
+            ToLowerDelegate demo = delegate (string source) { return source.ToLower(); };
+
+            Assert.StartsWith("<AnonymousMethods", demo.Method.Name);
+        }
+
+        /// <summary>
+        /// 省略new 委托名(),再省略参数
+        /// </summary>
+        [Fact]
+        public void AnonymousMethodsDelegate_EllipsisParameter_Test()
+        {
+            //再次省略了参数(当然,这样在方法体内也没法使用参数):编译器会自动推断
+            ToLowerDelegate demo = delegate { return "anonymousmethods"; };
+
+            Assert.StartsWith("<AnonymousMethods", demo.Method.Name);
+        }
+        #endregion
+
+        #region 拉姆达表达式
+        [Fact]
+        public void LambdaDelegate_Test()
+        {
+            ToLowerDelegate demo = (string source) => { return source.ToLower(); };
+
+            Assert.StartsWith("<Lambda", demo.Method.Name);
+        }
+
+        [Fact]
+        public void LambdaDelegate_Ellipsis_Test()
+        {
+            ToLowerDelegate demo = source => source.ToLower();
+
+            Assert.StartsWith("<Lambda", demo.Method.Name);
+        }
+        #endregion
+
+        #region 内置委托支持泛型
+        [Fact]
+        public void Action_Test()
+        {
+            Action action = () => { };
+
+            Assert.NotNull(action.Method);
+        }
+
+        [Fact]
+        public void ActionT_Test()
+        {
+            Action<int> action = (a) => { };
+
+            Assert.NotNull(action.Method);
+        }
+
+        [Fact]
+        public void Test()
+        {
+            List<string> aa = new List<string>();
+
+
+        }
+        #endregion
+
+        #endregion
+
+        #region 多播委托
+        #endregion
+
+        #region 辅助方法
+        private string GetClassName()
+        {
+            return this.GetType().FullName;
+        }
+        #endregion
+    }
+}
diff --git a/Study.DelegateSeries.Test/InvokDelegateTest.cs b/Study.DelegateSeries.Test/InvokDelegateTest.cs
new file mode 100644
index 0000000..83c12cf
--- /dev/null
+++ b/Study.DelegateSeries.Test/InvokDelegateTest.cs
@@ -0,0 +1,13 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Study.DelegateSeries.Test
+{
+    /// <summary>
+    /// 调用委托测试
+    /// </summary>
+    public class InvokDelegateTest
+    {
+    }
+}
diff --git a/Study.DelegateSeries.Test/StudyDelegateTest.cs b/Study.DelegateSeries.Test/PersonDelegateTest.cs
similarity index 83%
rename from Study.DelegateSeries.Test/StudyDelegateTest.cs
rename to Study.DelegateSeries.Test/PersonDelegateTest.cs
index 600aea9..2a59642 100644
--- a/Study.DelegateSeries.Test/StudyDelegateTest.cs
+++ b/Study.DelegateSeries.Test/PersonDelegateTest.cs
@@ -9,25 +9,17 @@ using Study.DelegateSeries.Core.Calculator;
 
 namespace Study.DelegateSeries.Test
 {
-    public class StudyDelegateTest : IDisposable, IClassFixture<StudyDelegate>
+    public class StudyDelegateTest : IDisposable, IClassFixture<InstanceDelegate>
     {
         #region 准备
-        private StudyDelegate studyDelegate;
+        private InstanceDelegate studyDelegate;
 
-        public StudyDelegateTest(StudyDelegate _studyDelegate)
+        public StudyDelegateTest(InstanceDelegate _studyDelegate)
         {
             this.studyDelegate = _studyDelegate;
         }
         #endregion
 
-        #region xUnit框架可能性测试
-        [Fact]
-        public void FixtureTest()
-        {
-            Assert.NotNull(studyDelegate);
-        }
-        #endregion
-
         #region 实例化委托测试
         [Fact]
         public void BaseInstanceTest()
diff --git a/Study.DelegateSeries.Test/UnitTest1.cs b/Study.DelegateSeries.Test/UnitTest1.cs
deleted file mode 100644
index 253f536..0000000
--- a/Study.DelegateSeries.Test/UnitTest1.cs
+++ /dev/null
@@ -1,14 +0,0 @@
-using System;
-using Xunit;
-
-namespace Study.DelegateSeries.Test
-{
-    public class UnitTest1
-    {
-        [Fact]
-        public void Test1()
-        {
-
-        }
-    }
-}
diff --git a/Study.DelegateSeries.Test/XUnitTest.cs b/Study.DelegateSeries.Test/XUnitTest.cs
deleted file mode 100644
index 0e6623d..0000000
--- a/Study.DelegateSeries.Test/XUnitTest.cs
+++ /dev/null
@@ -1,15 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Xunit;
-
-namespace Study.DelegateSeries.Test
-{
-    public class XUnitTest
-    {
-        [Fact]
-        public void UseXunit()
-        {
-            Assert.True(true, "���ͨ��");
-        }
-    }
-}