zoukankan      html  css  js  c++  java
  • C#项目学习记录

    1,   Visual Studio Code 添加VS 2017的开发人员命令提示符---C#编译环境

    2,  C#编译器和CLI的安装

    注意:自己的电脑上配置环境变量时,配置在系统变量的Path中并没有效果,(只)配置在用户变量中却有效果。

    C:WindowsMicrosoft.NETFramework64v4.0.30319

    3, C#程序结构分析实例

      不仅是结构分析,代码本身的 栈 类,也要仔细分析下,很有意思。1000的item里有个属性是next,指向了100的item,100的item的next属性又指向了10的item......

    首先,我们来输入一段C#程序

    using System;
    namespace Acme.Collections
    {
        public class Stack
        {
            Entry top;
            public void Push(object data) {
                top = new Entry(top, data);
            }
            public object Pop() {
                if (top == null) throw new InvalidOperationException();
                object result = top.data;
                top = top.next;
                return result;
            }
            class Entry
            {
                public Entry next;
                public object data;
                public Entry(Entry next, object data) {
                    this.next = next;
                    this.data = data;
                }
            }
         }
    }

    在名为Acme.Collections 的命名空间中声明了一个名为Stack 的类。Acme.Collections.Stack 是此类的完全限定名。该类包含几个成员:一个名为top 的字段,两个分别名为Push 和Pop 的方法和一个名为Entry 的嵌套类。Entry 类还包含三个成员:一个名为next 的字段、一个名为data 的字段和一个构造函数。假定将此示例的源代码存储在文件acme.cs 中,执行以下命令行:csc /t:library acme.cs,将此示例编译为一个库(没有Main 入口点的代码),并产生一个名为acme.dll 的程序集。程序集包含中间语言(Intermediate Language, IL) 指令形式的可执行代码和元数据(metadata) 形式的符号信息。在执行程序集之前,.NET 公共语言运行时的实时(JIT) 编译器将程序集中的IL 代码自动转换为特定于处理器的代码。由于程序集是一个自描述的功能单元,它既包含代码又包含元数据,因此,C# 中不需要#include 指令和头文件。若要在C# 程序中使用某特定程序集中包含的公共类型和成员,只需在编译程序时引用该程序集即可。例如,下面的程序将使用来自acme.dll 程序集的Acme.Collections.Stack 类:

    using System;
    using Acme.Collections;
    class Test
    {
        static void Main() {
            Stack s = new Stack();
            s.Push(1);
            s.Push(10);
            s.Push(100);
            Console.WriteLine(s.Pop());
            Console.WriteLine(s.Pop());
            Console.WriteLine(s.Pop());
        }
    }

    如果此程序存储在文件test.cs 中,那么在编译test.cs 时,可以使用编译器的/r 选项引用acme.dll 程序集:
    csc /r:acme.dll test.cs
    这样将创建名为test.exe 的可执行程序集,运行结果如下:
    100
    10
    1
    C# 允许将一个程序的源文本存储在多个源文件中。在编译多个文件组成的C# 程序时,所有源文件将一起处理,并且源文件可以自由地相互引用— 从概念上讲,就像是在处理之前将所有源文件合并为一个大文件。C# 中从不需要前向声明,因为除了极少数的例外情况,声明顺序无关紧要。C# 不限制一个源文件只能声明一个公共类型,也不要求源文件的名称与该源文件中声明的类型匹配。

    通过上述分析,对你查阅MSDN的文档将有一定的帮助,不会再因为那些什么恼人的类啊,方法啊发愁了。

    4,C#解析xml相关:

    当xml中带有命名空间时(无论此命名空间是默认的还是有别名的),使用xmlDocument的selectNodes()等方法时需要传入第二个参数,即命名空间管理器。命名空间的名字可以自己随意取,只要在 xpath(即selectNodes()的第一个参数)中能对应起来就可以。比如,原始的xml 有个命名空间 xmlns:o="http://www.a.com", 我们可以这么使用:

    XmlDocument xmlRelDoc = new XmlDocument();
    xmlRelDoc.Load(relXmlPath);
    
    XmlNamespaceManager nsp = new XmlNamespaceManager(xmlRelDoc.NameTable);
    nsp.AddNamespace("y", "http://www.a.com");//这里的y是自己随便取得,只要在下面xPath中也使用相同的名称就可以了。
    同样,如果原始的xml的命名空间就只是默认的 xmlns="http://www.b.com", 我们在调用selectNodes()方法的时候(必须)也要给它起个别名(随意取),然后在下面xPath中使用此别名
    XmlNodeList relationNodes = xmlRelDoc.SelectNodes("//y:Relationship", nsp)

    2, //表示后代, 如a//b 表示a节点后代的所有b节点

    5,

    6,

  • 相关阅读:
    【腾讯Bugly干货分享】微信Tinker的一切都在这里,包括源码(一)
    【腾讯Bugly干货分享】iOS10 SiriKit QQ适配详解
    【腾讯Bugly干货分享】安卓单元测试:What, Why and How
    【腾讯Bugly干货分享】Android Linker 与 SO 加壳技术
    【腾讯优测干货分享】Android内存泄漏的简单检查与分析方法
    【腾讯Bugly经验分享】程序员的成长离不开哪些软技能?
    【腾讯Bugly干货分享】基于 Webpack & Vue & Vue-Router 的 SPA 初体验
    从零开始安装Hadoop视频教程
    如何在MAC机器中实现移动设备WiFI上网(没有专门的无线路由器的情况)
    Alfresco安装与配置图解
  • 原文地址:https://www.cnblogs.com/everest33Tong/p/10317305.html
Copyright © 2011-2022 走看看