在列表中添加方法

时间:2013-07-14 13:01:25

标签: c#

我正在尝试在索引列表中添加一个短值,但是我收到的错误是该方法的参数无效。

    int verticesStart = vertices.Count();
    short vertStart = (short)verticesStart;

由于索引列表是“短”,我将变量verticesStart转换为可用。

    indices.Add(vertStart + 0);

此行是我收到错误的地方。我不允许在Add方法中执行任何类型的数学函数吗?

4 个答案:

答案 0 :(得分:3)

C#中的算术是针对32位和更高的整数类型定义的,而不是short。当您执行vertStart + 0时,结果为int,您必须转回short

indices.Add((short)(vertStart + 0));

(我假设你实际上并没有添加0,而是添加其他值。因为当然,添加0不会改变值。)

答案 1 :(得分:2)

  

由于索引列表是“short

因此,您只能将short添加到indices

  

vertStart + 0

语言规则指定short + int的类型为int。由于vertStart的类型为short0的格式为int,因此vertStart + 0的类型为int。因此,

indices.Add(vertStart + 0);

正在尝试将int添加到您说保留short的列表中。这是不可能的。

  

我不允许用Add方法做任何类型的数学函数吗?

这不是重点。在将任何表达式传递给Add方法之前,会对它们的值进行求值。在您的情况下,您有一个表达式,其求值为int。但是,如果您indicies真的是List<short>,那么您就无法向其中添加int。您必须缩小转化为short

indices.Add((short)(vertStart + 0));

答案 2 :(得分:0)

算术始终至少在int完成。所以当你做这个添加时(为什么要加0,如果我可能会问?)你会得到一个int。之后你必须再次投简。

答案 3 :(得分:-2)

使用此:

using System;
using System.Collections.Generic;

public class Test
{
    public static void Main()
    {
        List<short> list = new List<short>();
        list.Add(1+1);
    }
}

在C#中,1为int,因此您需要确保添加short

的变量