首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

IIf函数的奇怪有关问题,大伙看看

2012-03-24 
IIf函数的奇怪问题,呵呵,大伙看看vb里Sub Main(ByVal args As String())Console.WriteLine(IIf(args.Lengt

IIf函数的奇怪问题,呵呵,大伙看看
vb里
  Sub Main(ByVal args As String())

  Console.WriteLine(IIf(args.Length > 0, args(0), ""))

  End Sub
出错,原因是iif的函数里的表达式都会计算一次先,由于args是空,arsg(0)下标越界了,用if语句和一个变量分别来写可以。

c#里用三目运算符可以,不会出错
  static void Main(string[] args)
  {
  Console.WriteLine(args.Length > 0 ? args[0] : "");

  }

这么会这样捏,奇怪的问题,msdn里可是说IIf 函数提供相当于 Visual C++ 中的三元 Conditional Operator: ? : 的功能。


[解决办法]
下面这篇文章说的是你这个问题,还提供了一个替代函数,哈哈:

http://samuraiprogrammer.com/community/blogs/greg/archive/2007/06/22/IIF-in-VB.net-vs.-_3F00_-_3A00_-in-C_2300_.aspx



[解决办法]
Sub Main(ByVal args As String()) 

Console.WriteLine(IIf(len(args) > 0, args(0), "")) 

End Sub 

[解决办法]
Sub Main(ByVal args As String()) 

Console.WriteLine(IIf(("" & args).Length > 0, args(0), "")) 

End Sub
[解决办法]
up
[解决办法]
vb里args可以是空的,你需要判断下 If args.Length <= 0
而c#里args[0]一定是有值的!
[解决办法]

探讨
vb里args可以是空的,你需要判断下 If args.Length <= 0
而c#里args[0]一定是有值的!//抱歉,我说的不对,记错了!

[解决办法]
IIF是这样的.它不支持短路计算.
转为IF THEN 算了嘛.
[解决办法]
知道了,是你Sub Main(ByVal args As String()) 中 数组定义错了
vb里 
Sub Main(ByVal args() As String) 

Console.WriteLine(IIf(args.Length > 0, args(0), "")) 

End Sub 
就对了!!
[解决办法]
IIf(args not nothing andalso args.Length > 0, args(0), ""))
[解决办法]
IIf(args isnot nothing andalso args.Length > 0, args(0), ""))
[解决办法]
兄弟放弃吧!没有别的解决方法的!~
除非不用IIF

热点排行