【问题标题】:Access to elements in List<string> with decimal value in C#在 C# 中使用十进制值访问 List<string> 中的元素
【发布时间】: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,也谢谢你。我欠你一个^_^

标签: c# list


【解决方案1】:

只需将十进制类型更改为int,索引类型为int,错误消息中说。

private string generator(int position, List<string> string_list) {
    List<int> mod_list = new List<int> ();
    string output = "";

    while (position >= 0) {
        mod_list.Add(position % string_list.Count);
        position -= position % string_list.Count;
        position /= string_list.Count;
        position -= 1;
    }
    int z = 1;
    for (int i = (mod_list.Count - 1); i >= 0; i += -1)
        output += string_list[mod_list[i]];

    return output;
}

【讨论】:

  • VS 从我那里收到一条错误消息:position /= (decimal) string_list.Count; 没关系,我定义了消息框并告诉用户停止进程,因为这需要一段时间。无论如何谢谢你:)
  • 是的。在您编辑之前,我自己编辑了代码。完成了。
  • 我真的很感谢你。你帮了我很多。玩得开心 :D 我忘了删除 int z = 1; xD 这是多余的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-08
  • 1970-01-01
  • 2021-07-06
  • 2017-11-09
相关资源
最近更新 更多