moodlee 发表于 2016-4-20 18:37

【原创源码】C#编写一款自己的脚本语言.第十五章

第十五章
处处槐花香,香在心头,思念起。
槐花饭、槐花糕、槐花蜜...
槐花在何处?小学的课本。
每欲槐花煮饭,终无果,遗憾了十数年,又一年。
——————————

——————————
上一章,我们写了单个变量的类。从图中,我们可以看出:变量的上一级是变量集(Variables)。
——————————
变量集有哪些属性呢?
——————————
public class UVariables
      {
            private List<UVariable> Variables = new List<UVariable>();

            privateUVariable Index(string Name)
            {
                UVariable myResult = new UVariable();
                //-----
                for (int i = 0; i < Variables.Count; i++)
                {
                  if (Variables.Name == Name)
                  {
                        myResult = Variables;
                        break;
                  }
                }
                //-----
                return myResult;
            }
            /*清空*/
            public void Clear()
            {
                Variables = new List<UVariable>();
            }
            /*添加*/
            public bool Add(string Type,string Name,string Value)
            {
                bool myResult=true;
                //-----
                if(Index(Name).Actived == true)
                {
                  ShowError(0,"Name="+Name);
                  return false;
                }
                UVariable Variable = new UVariable();
                Variable.Type = Type;
                Variable.Name = Name;
                Variable.Value = Value;
                Variables.Add(Variable);
                //-----
                return myResult;
            }
            /*读取值*/
            public string Read(string Name)
            {
                string myResult = string.Empty;
                //-----
                UVariable V = Index(Name);
                if (V.Actived)
                {
                  myResult = V.Value;
                }else
                {
                  ShowError(1,"Name="+Name);
                }
                //-----
                return myResult;
            }
            /*设置值*/
            public bool Set(string Name,string Value)
            {
                bool myResult = false ;
                //-----
                int IndexV = -1;
                for (int i = 0; i < Variables.Count; i++)
                {
                  if (Variables.Name == Name && Variables.Actived)
                  {
                        myResult = true;
                        IndexV = i;
                        break;
                  }
                }
                if (IndexV == -1)
                {
                  ShowError(1,"Name="+Name);
                }else
                {
                  Variables.Value = Value;
                }
                //-----
                return myResult;
            }
            #region 辅助函数
            private string Error(int ID, string Add = "")
            {
                string myResult = string.Empty;
                //-----
                string KeyError = string.Empty;
                switch (ID)
                {
                  case 0:
                        KeyError = "Error0:The var has existed.";
                        break;
                  case 1:
                        KeyError = "Error1:The var hasn't existed";
                        break;
                }
                if(Add .Length == 0)
                {
                  myResult = KeyError;
                }else
                {
                  myResult = KeyError + " Info:" + Add;
                }
               
                //-----
                return myResult;
            }
            private void ShowError(int ID,string Add = "")
            {
                MessageBox.Show(Error (ID,Add));
            }
            #endregion
      }
——————————
这个类主要实现对变量的管理。但是这种管理还远远不够。
因为变量有这几种情况:
1、类下
2、函数下
——————————
下一步,我们要将Variable实现函数管理、类管理。
——————————
根据图里面的关系,我们可以怎样进行设计呢?
——————————
明日十五,待月圆,仰望天空。


moodlee 发表于 2016-4-20 18:37

附上之前章节地址:

第一章:http://www.52pojie.cn/thread-470085-1-1.html
第二章:http://www.52pojie.cn/thread-470424-1-2.html
第三章:http://www.52pojie.cn/thread-471306-1-1.html
第四章:http://www.52pojie.cn/thread-471637-1-1.html
第五章:http://www.52pojie.cn/thread-471937-1-1.html
第六章:http://www.52pojie.cn/thread-472899-1-1.html
第六章.下:http://www.52pojie.cn/thread-473861-1-1.html
第七章:http://www.52pojie.cn/thread-476054-1-1.html
第八章:http://www.52pojie.cn/thread-478357-1-1.html
第八章.下:http://www.52pojie.cn/thread-478971-1-1.html
第九章:http://www.52pojie.cn/thread-481291-1-1.html
第十章:http://www.52pojie.cn/thread-482243-1-1.html
第十一章:http://www.52pojie.cn/thread-483382-1-1.html
第十二章:http://www.52pojie.cn/thread-484707-1-1.html
第十三章:http://www.52pojie.cn/thread-486262-1-1.html
第十四章:http://www.52pojie.cn/thread-488239-1-1.html

感谢支持!

zgkt 发表于 2016-4-20 19:44

更新一章,看一章……

啦灯是我干掉的 发表于 2016-4-20 19:50

不错!很用心!继续努力!{:1_919:}

IRELAND353 发表于 2016-4-20 21:26

看不懂,应该是高手

wangqiustc 发表于 2016-4-21 14:24

终于看到第十五章了

infofans 发表于 2016-4-21 17:26

加油,关注中!!

Fmd1988 发表于 2016-4-22 14:11

很好,不错。
页: [1]
查看完整版本: 【原创源码】C#编写一款自己的脚本语言.第十五章