在列表中添加方法

本文关键字:方法 添加 列表 | 更新日期: 2023-09-27 18:22:25

我正试图向索引列表中添加一个短值,但我收到一个错误,即该方法包含无效参数。

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

由于索引列表是一个"短",所以我将变量verticalsStart强制转换为可用的。

    indices.Add(vertStart + 0);

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

在列表中添加方法

C#中的算术是为32位及以上的整数类型定义的,而不是为short定义的。当您执行vertStart + 0时,结果是int,您必须将其转换回short:
indices.Add((short)(vertStart + 0));

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

由于索引列表是"short"

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

vertStart + 0

该语言的规则指定short + int的类型为int。由于vertStartshort类型,而0int文字,因此vertStart + 0具有int类型。因此,

indices.Add(vertStart + 0);

正在尝试将int添加到您所说的包含short s的列表中。这是不可能的。

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

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

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

算术总是在至少int上完成。所以当你做加法时(如果我可以问的话,为什么要加0?)你会得到一个int。之后你必须再次投回短杆。

使用这个:

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 的变量