莫名其妙的问题,找了几天资料还是不知道:结构体相关的问题,各位顺道帮我解释一下

nicch 2006-07-12 01:59:21
结构体是值类型,那么就是我的问题:

1.结构体到底要不要用new初始化?看到有书说不要,但是在C# 2005中如果没有初始化编译的时候就会报错的,提示未赋值的变量,必须初始化一下;

2.返回类型为结构体的函数,如果返回的是空的结构,应该如何返回?如下:
public SaveStatus Save(int i)
{
//
if(..)
{
return ...; //这个是正常的返回
}else{
return ...; //这里出现异常,需要返回空结构。
}
}
上面返回空结构的那个return用 return null不行,难道真的要定义一个新的结构然后返回??

3.与2类似,只不过是一个函数:
public void Save(int i,MultiInfo info)
{
}
现在调用这个过程的时候info是不需要赋予初始值的,那么传递参数的时候应该如何传递?
用Save(3,null)是不行的,已经试过了。


-------------
谢谢。
...全文
182 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
tigerjacky 2006-08-14
  • 打赏
  • 举报
回复
mark
nicch 2006-07-12
  • 打赏
  • 举报
回复
感谢各位,马上试试去
今晚系统刚重装,嘎嘎.
runrunrun 2006-07-12
  • 打赏
  • 举报
回复
1. 要用 new 初始化。但基本类型(int,float等等)可以不要。
2. 必须创建一个空对象。但C#2.0里有一个新类型Nullable,或者int?, float? 等,把结构用类包装了一下,可以返回null
3. 把类型改成
public void Save(int i,MultiInfo? info)
{
}
diandian82 2006-07-12
  • 打赏
  • 举报
回复
楼上正解
sxlfybb 2006-07-12
  • 打赏
  • 举报
回复
好像null是用来表达空的引用类型的,结构是值类型不能使用null来替代.我们经常使用到的datetime就是一个结构体,你可以在它身上试一下.
Knight94 2006-07-12
  • 打赏
  • 举报
回复
to 现在调用这个过程的时候info是不需要赋予初始值的,那么传递参数的时候应该如何传递?

与上面所说的做法类似
Knight94 2006-07-12
  • 打赏
  • 举报
回复
to 2.返回类型为结构体的函数,如果返回的是空的结构,应该如何返回?如下:

用struct定义的变量不能用null返回,你可以增加一个字段来表明此结构体是否为有效。
Knight94 2006-07-12
  • 打赏
  • 举报
回复
to 1.结构体到底要不要用new初始化?看到有书说不要,但是在C# 2005中如果没有初始化编译的时候就会报错的,提示未赋值的变量,必须初始化一下;

结构体需要初始化才能用,这是c#编译的时候加上的,但是对于结构体的初始化不一定用new。
mmens 2006-07-12
  • 打赏
  • 举报
回复
1.结构体到底要不要用new初始化?
2.返回类型为结构体的函数,如果返回的是空的结构,应该如何返回?
3.与2类似,只不过是一个函数:
public void Save(int i,MultiInfo info)
{
}
现在调用这个过程的时候info是不需要赋予初始值的,那么传递参数的时候应该如何传递?
用Save(3,null)是不行的,已经试过了。

-------------------------------------------------------------

1. 类型都需要new.只不过基本类型赋值时就已经new了,只不过没有显示表现出来。

2. 一般的做法都是new一个返回。
可以在调用端判断这个返回值是不是什么都没有赋值。或者添加其他返回参数用来判断是否操作正确。

3. 不能写null,必须赋值。哪怕在调用端new一个。可以在处理中不使用它就可以了。如果需要判断需不需要使用,那么你就得再添加参数了。
nicch 2006-07-12
  • 打赏
  • 举报
回复
。。急用啊各位。。卡住了。。

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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