【发布时间】:2019-12-20 06:45:40
【问题描述】:
我在 C# 中遇到了 List 类型的问题。我无法访问具有十进制值的列表变量元素。 我有以下功能。获取位置值和 string_list(各种字符的确切列表)并在 string_list 中的该位置找到该特定字符串。
private string generator(decimal position, List<string> string_list)
{
List<decimal> mod_list = new List<decimal>();
string output = "";
while (position >= 0)
{
mod_list.Add(position % string_list.Count);
position -= position % string_list.Count;
position /= (decimal)string_list.Count;
position -= 1;
}
int z = 1;
for (decimal i = (mod_list.Count - 1); i >= 0; i += -1)
output += string_list[mod_list[i]];
return output;
}
在output += string_list[mod_list[i]]; 行中,Visual Studio 收到我的错误,因为索引值应该是“int”。我用“int”数据类型测试这个函数并得到结果,但我想要十进制。
Visual Studio 中的错误消息:
Argument 1: cannot convert from 'decimal' to 'int'
谢谢你的回答^_^
【问题讨论】:
-
索引需要是一个整数值(有一个十进制索引真的没有意义)。 mod_list 是一个小数列表。因此,mod_list[i] 是小数,而 string_list[mod_list[i]] 是尝试使用小数索引从 string_list 中检索项目。
-
不确定您要做什么,但如果您真的需要将 mod_list 设为 List
,解决方法是进行强制转换。 string_list[(int)mod_list[i]]但是请注意,这会截断任何小数位。 -
@Kei,我知道。假设用户想要继续处理几个小时,也许 int 值不够。我们该怎么办?
-
@alidesu int 值可以编码为 8/16/32 位,所以不用担心
-
亲爱的@Arlien,也谢谢你。我欠你一个^_^