// 问题如下
// 先定义如下一个结构体
struct stuSTU
{
public int id;
public string name;
pulic stuSTU(int param_id, string param_name)
{
this.cid = param_id;
this.name = param_name;
}
}// 现在定义一个方法如下
public stuSTU Register(int id, string name)
{
if(null == name)
{
// 在这里我想返回一个类似对象空引用的东西,但结构体是值类型,没有空的说法,该如何表达空的意思呢
return [uncertain];
}
else
{
return (new stuSTU(id,name));
}
} 谢谢!
// 先定义如下一个结构体
struct stuSTU
{
public int id;
public string name;
pulic stuSTU(int param_id, string param_name)
{
this.cid = param_id;
this.name = param_name;
}
}// 现在定义一个方法如下
public stuSTU Register(int id, string name)
{
if(null == name)
{
// 在这里我想返回一个类似对象空引用的东西,但结构体是值类型,没有空的说法,该如何表达空的意思呢
return [uncertain];
}
else
{
return (new stuSTU(id,name));
}
} 谢谢!
解决方案 »
- 有谁做过地图软件或图片缩放和移动的软件没有?
- 发布个文本到wav 文件的.net类库,已经实现了男声。汉字朗读,字幕朗读,数字朗读,以及数值朗读等
- 一个数据验证问题
- 手写的xml跟C#编写出来的内容不一样??
- 库未注册是怎么回事?
- XML属性读取(再线等)
- 怎样给一个.NET生成的DLL加延迟签名(无源码的情况下)
- 為甚麼 安裝程式不能在startmenu\程序集 下建立捷徑
- 我不小心重置了工具箱的windows窗体选项卡,我的用户控件不见了,怎么找回来(不要直接浏览找dll)?
- Visual Studio 前台编写属性时,按下Tab键,把缩进效果改为方向键→效果
- 关于字符串
- 两个重叠的panel都显示不出来
1) 不使用结构体,使用class。2) 使用Nullable类型(.NET 2.0新增类型)public Nullable<stuSTU> Register(int id, string name)
{
//if(null == name)
if(string.IsNullOrEmpty(name))
{
return null;
}
else
{
return (new stuSTU(id,name));
}
}
// 现在定义一个方法如下
public stuSTU? Register(int id, string name)
{
if(null == name)
{
// 在这里我想返回一个类似对象空引用的东西,但结构体是值类型,没有空的说法,该如何表达空的意思呢
return null;
}
else
{
return (new stuSTU(id,name));
} }
注意函数的返回的定义是“stuSTU?”,而不是“stuSTU”,
如 stuSTU? tt;
则 tt.value是stuSTU类型的东东,此时tt可以为null。
但我还有两个疑问:1、Nullable只是用来解决该类问题的吗?还是有更深层或者广泛的作用?2、我对模板,或更确切一些泛型的概念还是不是很清楚。
return defautl(你的结构体);
如例程中的stuSTU结构,就需要判断:
if(stuSTU.id == 0 && stuSTU.name == null)
{
//...
}结构的成员字段少还好,如果一个结构有很多字段,那岂不是很麻烦?
我觉得用个-1或0表示说明没有意义,就相当于是为空了,你方法是stuSTU的值类型,所以要返回一个stuSTU。
结构体是值类型,分配在线程栈上的。类是引用类型,对象分配在栈上,实例分配在堆上。
return (new stuSTU(-1,-1));
我觉得用个-1或0表示说明没有意义,就相当于是为空了,你方法是stuSTU的值类型,所以要返回一个stuSTU。
结构体是值类型,分配在线程栈上的。类是引用类型,对象分配在栈上,实例分配在堆上。
==========================================================================================1、我没理解 “你方法是stuSTU的值类型,所以要返回一个stuSTU”的意思。2、“类是引用类型,对象分配在栈上,实例分配在堆上。”
我想确认一下,这句话中的“对象”是否是“对象引用”的简化说法。谢谢支持!
这个方法的返回类型是object ,所以return的就必须是object类型这里也一样
public stuSTU Register(int id, string name) {return val;}
你的方法是自定义类型 stuSTU,所以你return的就必须是stuSTU类型。又因为stuSTU是一个结构体类型,不能返回null,0这样的类型,
所以就return(new stuSTU(-1,-1)); 2:是的