结构体变量

XinXun 2013-06-09 03:57:17
有这么一条语句,搞不明白为什么要这么写:
Dim aline As Point() = {New Point(0, 0), New Point(2, 2)}

问题1:aline是结构体变量,声明变长数组为什么不写成这样:Dim bline() As Point = {New Point(0, 0), New Point(2, 2)},而把括号写在Point结构类型后面。两种写法有什么区别?
问题2:Point是结构体,又不是类,为什么用New关键字?
...全文
119 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
hztltgg 2013-06-09
  • 打赏
  • 举报
回复
vb的数组括号是可以在前面可以在后面,在前面是和以前的语法兼容,在后面是更规范 Dim bline() As Point Dim bline As Point() 在前面是定义一个Point类型的bline函数?语法上说不通。 在后面定义了一个Point()数组,区别Point结构,逻辑上更通顺。 和 Dim bline As Point 区别在于类型不同,而不是引用的变量不同。
XinXun 2013-06-09
  • 打赏
  • 举报
回复
为什么使用New关键字,我又想了想,应该是Point虽然是结构,但结构体可以拥有构造函数,使用New的目的是运行构造函数的代码。
XinXun 2013-06-09
  • 打赏
  • 举报
回复
引用 2 楼 dixh1989 的回复:
C#和VB定义数组时()都是跟在类型后面 。跟在变量后面好像必须先分配地址,C#里面还必须在非安全区域蔡能这么用。。

Point p=new Point(x,y);
不new就没有地址,调用是没有实际对象。
C#和VB定义数组时()都是跟在类型后面 。 那要是样的话,定义一个定长数组: dim strName as string(8) 编译器是通不过的,提示“数组界限不能出现在类型说明符中“
是_这样吗 2013-06-09
  • 打赏
  • 举报
回复
C#和VB定义数组时()都是跟在类型后面 。跟在变量后面好像必须先分配地址,C#里面还必须在非安全区域蔡能这么用。。

Point p=new Point(x,y);
不new就没有地址,调用是没有实际对象。
moonwrite 2013-06-09
  • 打赏
  • 举报
回复
1. VB定义的语法,语法就像主谓宾那样,可以减少句子的二义性~ 可以看看《数学之美》前google工程师,专门搞语言搜索的~ 2. new是分配内存,并返回内存位置 与结构和类无关
int i = new int();
i = 10;
Console.WriteLine(i);

16,721

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧