在c#中,想要实现指向本身的结构体如: 一个表示任务的结构体 public struct Task
{
public string taskName;
public int taskType;
public int taskLines;
public int processTime;
public int maxHead;
public int startTime;
public int finishTime;
public int priority;
public bool ordered;
public Task[] preTasks;//此任务的前序任务
}在vs2005下编译提示错误 成员名称不能与它们的封闭类型相同问题:(1)采用结构体如何实现此功能
(2)应用类如何实现此功能
{
public string taskName;
public int taskType;
public int taskLines;
public int processTime;
public int maxHead;
public int startTime;
public int finishTime;
public int priority;
public bool ordered;
public Task[] preTasks;//此任务的前序任务
}在vs2005下编译提示错误 成员名称不能与它们的封闭类型相同问题:(1)采用结构体如何实现此功能
(2)应用类如何实现此功能
解决方案 »
- 这个问题是vs2012的debug,还是我设置的问题
- 怎么样在未安装OFFICE机器上运行调用了WORD组件的WINFORM程序
- 水晶报表在2003中无法显示
- 在一个单元测试中,我先建立一个xml文件,然后删除它:在删除时报错误:System.IO.IOException: 文件“C:\a.xml”正由另一进程使用,因此该进
- 编写一个控制台应用程序它接受一个字符串,把字符串中的no 用yes代替后输出
- DateTimePicker用键盘上下调整月份时报错?
- 高分求水晶报表(CrystalReports)软件或下载地址!
- 如何获取本机的数据源名称?
- QQ里点击“聊天记录”后在原窗口下拉出一“聊天记录”窗口,是怎么做到的?
- 获取局域网网卡mac的源程序
- C#程序设计中如何给程序导入声音(详细些,出一百分哈)
- 未将对象引用设置到对象实例
{
public string taskName;
public int taskType;
public int taskLines;
public int processTime;
public int maxHead;
public int startTime;
public int finishTime;
public int priority;
public bool ordered;
public Task[] preTasks;//此任务的前序任务
}//此结构可以按如下写
public struct Task
{
public string taskName;
public int taskType;
public int taskLines;
public int processTime;
public int maxHead;
public int startTime;
public int finishTime;
public int priority;
public bool ordered;
public int taskID; //本任务的ID
public int preTaskID;//前序任务ID;-1表示第一个人任务
}
结构是值类型(第 4.1 节)且被称为具有值语义。另一方面,类是引用类型(第 4.2 节)且被称为具有引用语义。
结构类型的变量直接包含了该结构的数据,而类类型的变量所包含的只是对相应数据的一个引用(被引用的数据称为“对象”)。如果结构 B 包含 A 类型(A 是结构类型)的实例字段时,则因为 A 依赖 B,会发生编译时错误。如果结构 X 包含结构 Y 类型的实例字段,则 X 直接依赖于 Y。从上述定义可以推出:一个结构所依赖的结构的完整集合就是此直接依赖于关系的传递闭包。例如
struct Node
{
int data;
Node next; // error, Node directly depends on itself
}
是错误的,因为 Node 包含自身类型的实例字段。另一个示例
struct A { B b; }
struct B { C c; }
struct C { A a; }
是错误的,因为类型 A、B 和 C 都彼此相互依赖。
对于类,两个变量可能引用同一对象,因此对一个变量进行的操作可能影响另一个变量所引用的对象。对于结构,每个变量都有它们自己的数据副本(除 ref 和 out 参数变量外),因此对一个变量的操作不可能影响其他变量。另外,由于结构不是引用类型,因此结构类型的值不可能为 null。
给定下列声明
struct Point
{
public int x, y;
public Point(int x, int y) {
this.x = x;
this.y = y;
}
}
代码段
Point a = new Point(10, 10);
Point b = a;
a.x = 100;
System.Console.WriteLine(b.x);
输出值 10。将 a 赋值给 b 时将创建该值的副本,因此,b 不会受到为 a.x 赋值的影响。假如 Point 被改为声明为类,则输出将为 100,因为 a 和 b 引用同一对象。--摘自<<C# Language Specification 1.2>>
public struct Task
{
public string taskName;
public int taskType;
public int taskLines;
public int processTime;
public int maxHead;
public int startTime;
public int finishTime;
public int priority;
public bool ordered;
public Task[] preTasks;//此任务的前序任务
}改为类定义public class Task
{
public string taskName;
public int taskType;
public int taskLines;
public int processTime;
public int maxHead;
public int startTime;
public int finishTime;
public int priority;
public bool ordered;
public Task[] preTasks;//此任务的前序任务
}