Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 这行代码是做什么的?“description=((字符串[])结果[0])[2];”_C# - Fatal编程技术网

C# 这行代码是做什么的?“description=((字符串[])结果[0])[2];”

C# 这行代码是做什么的?“description=((字符串[])结果[0])[2];”,c#,C#,我有一个sql数据库,我想使用它的特定列。下面的代码显示了第三列中的匹配项。我只是想知道字符串[]结果[0][2]在代码中的确切作用 注意:SingleSelectWhere函数选择与word列中的bag单词匹配的记录 db.OpenDB("English.db"); ArrayList result = db.SingleSelectWhere("petdef", "*", "word", "=", "'bag'"); if(result.Count > 0) { descrip

我有一个sql数据库,我想使用它的特定列。下面的代码显示了第三列中的匹配项。我只是想知道字符串[]结果[0][2]在代码中的确切作用

注意:SingleSelectWhere函数选择与word列中的bag单词匹配的记录

db.OpenDB("English.db");
ArrayList result = db.SingleSelectWhere("petdef", "*", "word", "=", "'bag'");
if(result.Count > 0)
{
    description = ((string[])result[0])[2];
}
db.CloseDB();

如果您不知道代码的作用,请尝试将其拆分为一些更可读的代码。如果我们取此行:description=string[]result[0][2];我们可以做到:

var result1 = result;
var result2 = result[0];
var result3 = (string[])result2;
var description = result3[2].
如果将断点设置为第一行,只需开始调试并查看每个步骤/变量包含的内容。作为提示


答案是:它获取名为result的数组/列表并返回第一个元素。然后将其强制转换为字符串数组,最后选择第三个元素,即基于零的索引!。希望这能有所帮助。

小题大做:它没有取消装箱,因为它没有转换为值类型。这是一个简单的引用类型转换。我想知道的是,为什么2015年有人使用非通用ArrayList。@M.kazemAkhgary:这不是拆箱,在使用ArrayList时只装箱值类型,这就是为什么最好使用其通用对应项List,以避免装箱和强制转换。在这种情况下,铸造是非常便宜的,只有几个健全的检查。但比装箱更麻烦的是编译时类型安全性的丧失,因为在您尝试强制转换之前,您无法确定ArrayList实际存储的是哪种类型的元素。我确信您没有要求堆栈溢出社区手动解释编译器和调试器可以为您解释的代码。不幸的是,你的问题看起来就是这个样子。请改进这个问题,以便清楚地知道你实际上在问什么。你有什么具体问题?请提供一个可靠地重现该问题的方法。它从第一组结果中选择第三个单词。盲目地假设该集合中有>=3个单词。@MattiVirkkunen-该API显然必须以泛型无法处理的方式处理多个类型。2015年,Dynamic可能是更好的选择。