问题描述
//时长publicstructNP_TIMESPAN{//时publicintHour;//分publicintMinute;//秒publicintSecond;//毫秒publicintMilliSeconds;};//这是引用的页面类NP_PAGE_INFOpageInfo=newNP_PAGE_INFO();pageInfo.Name="page1";//pageInfo.PlayType=1;//按次数播放//pageInfo.PlayTimes=100;pageInfo.PlayType=0;//按时长播放这个是引用的页面类然后再页面类中我还要引用时长类,在页面类中有对时长类的说明,是不是就可直接引用啊pageInfo.PlayDuration.hour=5;?不用NP_PAGE_INFOpageInfo=newNP_PAGE_INFO();吧//常规页面的信息publicstructNP_PAGE_INFO{//页的名称publicstringName;//播放方式:0表示指定时长,1表示指定次数,2表示循环播放publicbytePlayType;//播放次数,当PlayType为1时该属性有效publicbytePlayTimes;//播放时长,当PlayType为0时该属性有效publicNP_TIMESPANPlayDuration;//背景颜色publicuintBackColor;};
解决方案
解决方案二:
结构是值类型可以不new也能使用
解决方案三:
是的,不需要特殊处理
解决方案四:
struct本身是值类型,不需要new但是如果struct内部包含引用类型变量需要先new,再使用,不然值默认为null
解决方案五:
引用3楼songbing774933的回复:
struct本身是值类型,不需要new但是如果struct内部包含引用类型变量需要先new,再使用,不然值默认为null
struct本身是值类型,不需要new但是如果struct内部包含引用类型变量struct内部的引用类型成员需要先new,再使用,不然值默认为null
解决方案六:
classProgram{staticvoidMain(string[]args){class1c=newclass1();c.s.num=1;c.s.c=newclass2();//这儿不new的话,将导致下面的c.s.c.num=2;异常c.s.c.num=2;}}classclass1{publicsss;}classclass2{publicintnum;}structss{publicintnum;publicclass2c;}
解决方案七:
引用2楼starfd的回复:
是的,不需要特殊处理
是不是要说明pageInfo.PlayDuration=newNP_TIMESPAN();
解决方案八:
引用5楼songbing774933的回复:
classProgram{staticvoidMain(string[]args){class1c=newclass1();c.s.num=1;c.s.c=newclass2();//这儿不new的话,将导致下面的c.s.c.num=2;异常c.s.c.num=2;}}classclass1{publicsss;}classclass2{publicintnum;}structss{publicintnum;publicclass2c;}
嗯也可以class2c.s.c=newclass2();对吧
解决方案九:
引用7楼qq_33603542的回复:
Quote: 引用5楼songbing774933的回复:
classProgram{staticvoidMain(string[]args){class1c=newclass1();c.s.num=1;c.s.c=newclass2();//这儿不new的话,将导致下面的c.s.c.num=2;异常c.s.c.num=2;}}classclass1{publicsss;}classclass2{publicintnum;}structss{publicintnum;publicclass2c;}嗯也可以class2c.s.c=newclass2();对吧
不对,class2c.s.c=newclass2();相当于是定义一个名为c.sc.的变量了当然,这个是编译不过的,因为违反了变量的命名规则
解决方案十:
初次可以直接使用值类型成员,不用new了,但是你想改Hour的话,对不起,那就要newNP_TIMESPAN()可以class就刚好相反了,初次使用必须new(),以后改值就可以直接赋值
解决方案十一:
struct是值类型,不用New可以直接使用