大型网站建设需要,wordpress主题 带会员中心,wordpress 获取父页面,东莞建筑公司排行榜目录
一、涉及到的知识点#xff1a;
1.ListNode 类使用自动属性设计
2. 泛型节点类设计的误区
二、仅仅定义泛型节点类#xff0c;实现最短的双向链表 一、涉及到的知识点#xff1a;
1.ListNode 类使用自动属性设计
public class ListNode
{public object Object { …目录
一、涉及到的知识点
1.ListNode 类使用自动属性设计
2. 泛型节点类设计的误区
二、仅仅定义泛型节点类实现最短的双向链表 一、涉及到的知识点
1.ListNode 类使用自动属性设计
public class ListNode
{public object Object { get; set; }public ListNode? Next { get; set; }public ListNode? Previous { get; set; }public ListNode(object obj){Object obj;}
} 或者 // object是关键字public class ListNode(object obj){public object Object { get; set; } obj;public ListNode? Next { get; set; }public ListNode? Previous { get; set; }} 在这个版本中Object 属性被改为使用 object 类型。同时构造函数接受一个 object 类型的参数并将其赋值给 Object 属性。 上面两种情况修改为泛型节点类
public class ListNodeT
{public T Object { get; set; }public ListNodeT? Next { get; set; }public ListNodeT? Previous { get; set; }public ListNode(T value){Object value;}
}或者
/// summary
/// 定义双向泛型节点类
/// /summary
/// typeparam nameT泛型标识符/typeparam
/// param namevalue泛型参数值/param
public class ListNodeT(T value)
{public T Object { get; set; } value;public ListNodeT? Next { get; set; }public ListNodeT? Previous { get; set; }
} 更改了 Object 和 Next 属性的类型使用泛型类型参数 T 而不是 Objects 或 ListNode?。这使 ListNode 类更灵活可以容纳任何类型的对象。
2. 泛型节点类设计的误区 以下是二种设计泛型节点类的错误方法编辑的的时候就显示4个红色的警告错误CS1001、CS1003、CS1001、CS1525。
public class ListNodeT(T object)
{public T Object { get; set; } object;public ListNodeT? Next { get; set; }public ListNodeT? Previous { get; set; }
} 或者
public class ListNodeT
{public T Object { get; set; }public ListNodeT? Next { get; set; }public ListNodeT? Previous { get; set; }public ListNode(T object){Object object;}
} 错误的位置在与使用了关键字object
public ListNode(T object)
{Object object;
} 这个构造函数会导致编译器警告因为它会遮盖 object 关键字。要解决这个问题你可以将构造函数的参数名称更改为其他名称例如 value
public ListNode(T value)
{Object value;
} 这样代码应该可以在 Visual Studio 中编译通过且没有警告或错误。
二、仅仅定义泛型节点类实现最短小的双向链表 这段程序很精巧、短小但是功能不差事仅仅定义了一个泛型节点类ListNodeT就实现了一个双向链表对链表进行初始化并遍历链表各节点的数据。
// 只使用自动属性的 ListNodeT 类
// 不设计链表类简单实现泛型双向链表
// 遍历输出链表中各节点
namespace _132_2
{/// summary/// 定义双向泛型节点类/// /summary/// typeparam nameT泛型标识符/typeparam/// param namevalue泛型参数值/parampublic class ListNodeT(T value){public T Object { get; set; } value;public ListNodeT? Next { get; set; }public ListNodeT? Previous { get; set; }}class Program{static void Main(string[] args){ArgumentNullException.ThrowIfNull(args);// 创建元素为5的首个节点ListNodeint firstNode new(5);// 创建元素为2的第二个节点并将其连接到第一个节点ListNodeint secondNode new(2);firstNode.Next secondNode;secondNode.Previous firstNode;// 创建元素为8的第三个节点并将其连接到第二个节点ListNodeint thirdNode new(8);secondNode.Next thirdNode;thirdNode.Previous secondNode;// 创建元素为1的第四个节点并将其连接到第三个节点ListNodeint fourthNode new(1);thirdNode.Next fourthNode;fourthNode.Previous thirdNode;// 遍历链表并打印每个元素ListNodeint? currentNode firstNode;while (currentNode ! null){Console.WriteLine(currentNode.Object);currentNode currentNode.Next;}}}
}
//运行结果
/*
5
2
8
1*/