认识C#程序结构

c#中的关键组织概念是programs、namespaces、types、members和assemblies。

程序中声明带有members和能被划分到对应namespace的types:

Classes\Structs\Interfaces都是types的例子;

Fields\Methods\Properties\Events是members的例子;

当C#的程序被编译以后,他们被打包到assemblies。 程序集的文件扩展名通常为.exe或.dll,具体取决于它们分别实现的是application还是library。

一个简单的C#程序:

Stack类:
using System;

namespace Acme.Collections {
    public class Stack<T>
    {
        Entry _top;

        public void Push(T data)
        {
            Console.WriteLine("push data {0}", data);
            _top = new Entry(_top, data);
        }

        public T Pop()
        {
            if (_top == null)
            {
                throw new InvalidOperationException();
            }
            T result = _top.Data;
            _top = _top.Next;
            Console.WriteLine("pop data {0}", result);
            return result;
        }

        class Entry
        {

            private Entry next;
            private T data;

            public Entry Next { 
                get
                {
                    return next; 
                }
                set
                {
                    this.next = value;
                }
            }
            public T Data { 
                get
                {
                    return data;
                }
                set
                {
                    this.data = value;
                }
            }

            public Entry(Entry next, T data)
            {
                Next = next;
                Data = data;
            }
        }
    }
}

该类的完全限定名是 Acme.Collections.Stack。类包含了几个成员,一个是_top的Field(属性),两个methods(方法),分别是Push和Pop,还有一个嵌套内部类Entry。

进一步的,这个内部类包含了三个成员:Next\Data fields和一个构造器。

这个Stack类是一个通用的类,它包含了一个类型参数T,在使用过程中会被替换成具体的类型。

对于Stack(栈)的理解,参考 栈的介绍 什么是栈?_有心栽花无心插柳的博客-CSDN博客

此处提供的例子定义了栈的存储和行为,我们可以创建Stack的实例对他进行使用。

Example.cs

这个cs文件提供了上述stack类的使用的一个简单例子:

using System;
using Acme.Collections;

class Example
{
    public static void Main()
    {
        Stack<int> s = new Stack<int>();
        s.Push(1); // stack contains 1
        s.Push(10); // stack contains 1, 10
        s.Push(100); // stack contains 1, 10, 100
        Console.WriteLine(s.ToString());
        Console.WriteLine(s.Pop()); // stack contains 1, 10
        Console.WriteLine(s.Pop()); // stack contains 1
        Console.WriteLine(s.Pop()); // stack is empty
    }
}

该cs文件使用了上述定义的Stack类。

要运行上述程序,把他们分别copy到两个cs文件中(比如我把上述文件分别放在了CSharpStructureDemo.cs 和 Example.cs中),切换到文件中所在目录,然后用csc命令执行(关于如何配置csc, 请参考:C#开发环境准备_c#开发环境安装_非正规程序员的博客-CSDN博客):

方案1:

(1)执行csc .\CSharpStructureDemo.cs .\Example.cs   然后会生成Example.exe

(2)运行./Example

方案2:

(1)执行csc /target:library .\CSharpStructureDemo.cs 然后生成CSharpStructureDemo.dll

  (2) csc /r:CSharpStructureDemo.dll .\Example.cs  然后会生成Example.exe

(3)运行./Example

猜你喜欢

转载自blog.csdn.net/weixin_41385146/article/details/131277759