如何判断一个变量是否为只读
某一个变量,类型不确定,在运行时,有可能是只读,也有可能可读写,我需要调用一个函数,将这个变量作为参数传过去,但是这个函数的参数声明却是byref,如果这个变量是只读,则会产生运行时错误,请问有什么办法可以避免这个问题。 问题点数:100、回复次数:8Top
1 楼ice_frank(回归......)回复于 2006-05-02 11:18:46 得分 0
关注Top
2 楼yinweihong()回复于 2006-05-02 11:25:18 得分 0
JCooke_MS (Expert):
Q: Is it possible in vb.net to pass a variable by reference to a function and have variable in a readonly state so it can’t be modified by the receiving function?
A: If the function takes a ByRef arguement, the function can change it as much as it wants. I suppose that you could make a copy of your variable, and only pass the copy. Then it wouldn't matter if the function changed it.
Top
3 楼ljh()回复于 2006-05-02 11:30:45 得分 0
问题在于我还要判断这个变量如果是可写的话,这个函数还需要改变这个变量的值,如果仅仅拷贝这个变量,那么这个变量我就不能真正修改他的值了,这就是为什么函数里面的参数声明为byref的原因。也就是说,我需要判断这个变量是否可写,如果可写,修改它的值,如果只读则不修改,但是要确保不会产生运行时错误。Top
4 楼yurow(路漫漫其修远兮,吾将上下而爬楼梯!)回复于 2006-05-02 12:39:19 得分 0
如果不需要判断只要避免错误的话,建议每次使用该变量时候使用该变量的拷贝Top
5 楼yurow(路漫漫其修远兮,吾将上下而爬楼梯!)回复于 2006-05-02 12:42:05 得分 0
实在不行可以用
try
{
a = "asdasd" //给a赋值,如果可以修改那么成功,如果为只读,进入错误处理
}
catch
{
//错误处理,可以在这里拷贝一个使用...等
}
建议不采用以上方法,出错时效率比较低Top
6 楼yinweihong()回复于 2006-05-02 13:35:33 得分 0
放在一起是做不来Top
7 楼alan001(星岛孤裔林郎君)回复于 2006-05-03 07:54:29 得分 0
学习Top
8 楼YidingHe(机枪兵)回复于 2006-05-03 13:11:58 得分 0
方法中添加一个Boolean类型参数名叫IsReadOnly即可。Top




