使用strict = off(project..project properties..strict = off),我可以
Dim Objects As Object = New Object() {"AAA", "BBB"}
ListBox1.Items.AddRange(Objects)
但是,如果我做严格=然后它告诉我
Error 1 Overload resolution failed because no accessible 'AddRange' can be called with these arguments:
'Public Sub AddRange(items() As Object)': Option Strict On disallows implicit conversions from 'Object' to '1-dimensional array of Object'.
'Public Sub AddRange(value As
System.Windows.Forms.ListBox.ObjectCollection)': Option Strict On disallows implicit conversions from 'Object' to 'System.Windows.Forms.ListBox.ObjectCollection'.
通常使用strict = off隐式的这些转换,当我转为strict = on时,编译错误会告诉我要将其更改为什么。但在这里它并没有提出任何建议。
我想保持严格=(至少为了学习这个目的)
如何明确地转换它,以便它不会给出编译错误。所以我可以让这两行用strict = on?
添加了澄清
我现在看到我错过了括号。所以我会澄清我的问题。问题是这个 -
如果我这样做
Dim nums As Integer = {4, 5, 6, 7}
然后我得到一个编译错误,即使用strict = off也无法编译它
另一方面,这个
dim obj as Object = {4,5,6,7]
上面的那一行将使用strict = off进行编译,因为即使右侧是一个对象数组,它也可以是一个对象,也可以转换为一个对象。
如果我执行strict = off然后它可以工作,那么VB正在进行一些转换以使其工作。即,它不能将整数数组转换为整数。但它(似乎)可以将对象数组转换为对象。
即。当编译器看到Dim nums As Integer = {4, 5, 6, 7}
并且严格=关闭时,它没有说"啊他错过了括号"并将其转换为dim nums为Integer()= {4,5,6,7}。同样地,我确信它不会使用dim object as Object = {3,4,5,6}
,但它在对象案例中做了一些事情,以使其工作。它隐含地做了。
我希望看到它是什么,明确地说,我想看看添加到它的是什么,copiler会添加它,进行转换,以使其工作。不管它是什么,它都没有添加括号。
答案 0 :(得分:1)
只需在Dim Objects As Object() = New Object() {"AAA", "BBB"}
:
Objects
原因是您将Object
声明为Objects
,而不是Dim Objects = New Object() {"AAA", "BBB"}
的数组。请注意,您也可以这样做:
object
此外,我建议您遵守命名约定并将变量命名为小写Dim objects = New Object() {"AAA", "BBB"}
:
$array = array();
while ($row = mysql_fetch_array($query)) {
array_push($array, $row["ipsum"]);
}
if (in_array($page1, $array)) {echo "correct";}
else {echo "not correct"; }