1

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

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

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

    indices.Add(vertStart + 0);

这条线是我得到错误的地方。我是否不允许在 Add 方法中执行任何类型的数学函数?

4

4 回答 4

3

C# 中的算术是为 32 位及以上整数类型定义的,而不是为short. 当你这样做vertStart + 0时,结果是一个int,你必须把它转换回一个short

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

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

于 2013-07-14T13:09:35.477 回答
2

由于索引列表是“ short

因此,您只能将shorts 添加到indices.

vertStart + 0

语言规则指定short + int具有 type int。由于vertStartis 是 typeshort并且0int文字,vertStart + 0因此具有 type int。所以,

indices.Add(vertStart + 0);

正在尝试将一个添加int到您所说的持有shorts 的列表中。这是不可能的。

我是否不允许在Add方法中执行任何类型的数学函数?

那不是重点。任何表达式在传递给Add方法之前都会对其值进行评估。在您的情况下,您有一个计算结果为 type 的表达式int。但是如果indicies真的List<short>如你所说的那样,那么你不能添加ints 到它。您将不得不缩小转换为short.

indices.Add((short)(vertStart + 0));
于 2013-07-14T13:06:22.357 回答
0

算术总是至少在int. 所以当你做那个加法时(如果我问,为什么加 0?)你会得到int回报。之后你必须再次回撤。

于 2013-07-14T13:05:58.530 回答
-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

于 2013-07-14T13:08:04.347 回答