【问题标题】:Working with index, local variable and class使用索引、局部变量和类
【发布时间】:2019-08-28 03:25:57
【问题描述】:

在下面的代码中,我尝试对 item.Number 使用索引 看起来我无法像这样比较 if (item.Number[index] == decimalNumbers[j]) 并得到错误“c# cannot apply indexing with [] to an expression of type 'int'”

如果有人能引导我走向正确的方向。 此外,代码不是完整的代码。我只是想了解其中的原因。

public class NumberWithDifference
{
    public int Number { get; set; }
    public static int[] decimalNumbers = new int[10]{0,1,2,3,4,5,6,7,8,9};

    foreach (var item in jagged.Items)
    {
        i = true;
        int index = 0;
        var a = item.Number;

        for (int j = 0; j < decimalNumbers.Length; j++)
        {
            if (item.Number[index] == decimalNumbers[j])
            {
                Console.Write(decimalNumbers[j]);
                i = false;

                if (index < item.Number.Length - 1)
                        index++;
            }

            else
            {
                Console.Write(0);
            }
    }
}

【问题讨论】:

  • 你已经在使用 foreach,所以它是单独的项目
  • 表示 item.Number 不是数组而是 int。所以,使用 item.number = 。看起来你在使用 foreach 时不需要索引
  • @KrishnaDhugana - foreach 与小数一起使用....我正在比较不同的 item.number 值和不同的小数
  • 你能把变量类型'jagged'的结构贴出来吗?

标签: c# indexing


【解决方案1】:

正如错误消息所述,item.Number 是一个 int。索引可以应用于数组或 int 列表,但不能应用于单个 int 值。

因此,下面的这段代码,

if (item.Number[index] == decimalNumbers[j])

应该是

if (item.Number == decimalNumbers[j])

假设 jagged 是 NumberWithDifference 的数组,您也可以改为:

for (int j = 0; j < decimalNumbers.Length; j++)
{
    if (jagged[index].Number == decimalNumbers[j])
    {
        etc...

【讨论】:

  • @abhi,您能分享一下您在尝试上述方法时收到的错误消息吗?
  • 这里是错误消息“无法使用 [] 将索引应用于 'JaggedData' 类型的表达式”
  • 啊,好吧,在这种情况下,看起来 JaggedData 是一种不支持索引的自定义数据类型。您要么需要为 JaggedData 定义一个索引器(参见 docs.microsoft.com/en-us/dotnet/csharp/programming-guide/…),要么只使用 if (item.Number == decimalNumbers[j])
猜你喜欢
  • 2016-12-01
  • 2018-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-15
  • 1970-01-01
相关资源
最近更新 更多