首页 新闻 会员 周边

请教c#指针问题

-1
悬赏园豆:5 [已解决问题] 解决于 2013-12-02 13:01

对象=指针?

如下代码

public class Clist     {         public Clist()         {             //构造函数             //初始化             ListCountValue = 0;             Head = null;             Tail = null;         }

        // 头指针         private ListNode Head;

        // 尾指针          private ListNode Tail;

        // 当前指针         private ListNode Current;

        //链表数据的个数         private int ListCountValue;

        //尾部添加数据         public void Append(int DataValue)         {             ListNode NewNode = new ListNode(DataValue);

            if (IsNull())

            //如果头指针为空             {                 Head = NewNode;                 Tail = NewNode;             }             else             {                 Tail.Next = NewNode;                 NewNode.Previous = Tail;                 Tail = NewNode;             }             Current = NewNode;             //链表数据个数加一             ListCountValue += 1;         }         //删除当前的数据

太笼统的主页 太笼统 | 初学一级 | 园豆:4
提问于:2013-12-02 09:03
< >
分享
最佳答案
0

C#要用指针必须在unsafe环境下。把类声明称unsafe的就可以像C++一样用指针。

不过这根本没有必要,C#的类是应用类型,可以近似地看成指针,也可以向指针一样构造链表

给你个示范:

namespace Test
{
    class Node
    {
        public int Data { get; set; }
        public Node Next { get; set; }

        public Node(int d, Node next = null)
        {
            Data = d;
            Next = next;
        }
    }

    class SingleLinkList
    {
        public Node Head { get; set; }
        public Node Current { get; set; }

        public SingleLinkList()
        {
            Head = null;
            Current = Head;
        }

        public SingleLinkList(Node head)
        {
            Head = head;
            Current = Head;
        }

        public void Append(Node node)
        {
            Current.Next = node;
            Current = Current.Next;
        }

        public void ShowList()
        {
            for (Node current = Head; current != null; current = current.Next)
            {
                Console.WriteLine(current.Data);
            }
        }
    }

    class Program
    {
        static void Main()
        {
            SingleLinkList l = new SingleLinkList(new Node(1));
            l.Append(new Node(2));
            l.Append(new Node(3));
            l.ShowList();
        }
    }
}
收获园豆:5
飞鸟_Asuka | 菜鸟二级 |园豆:209 | 2013-12-02 09:53

我能理解为  类=int * 吗

太笼统 | 园豆:4 (初学一级) | 2013-12-02 12:29

@太笼统: 不是

类是对你所研究问题的一个抽象,可以认为是一个自定义的数据类型

指针只是一个对数据的间接访问

因此,不能说类=指针

只能说某类的变量(引用)近似于指针

请好好理解C#中值类型和引用类型的定义和区别,这点园子里有很多文章说明的

飞鸟_Asuka | 园豆:209 (菜鸟二级) | 2013-12-02 13:00
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册