我看到Jon在初始化未知类型的通用对象时的回复:
但是,如果您希望单个集合包含多个不相关的值类型,则必须使用
List<object>
我不是比较ArrayListvs List<>,而是ArrayListvs List<object>,因为两者都将暴露类型的元素object.在这种情况下使用任何一个会有什么好处?
编辑:这里不关心类型安全,因为这两个类都是object作为它的项目暴露.仍然需要从object所需的类型转换.除了类型安全之外,我对其他任何事情都更感兴趣.
编辑:谢谢马克格拉维尔和肖恩的答案.对不起,我只能选1作为答案,所以我会投两票.
我想知道Array,ArrayList和List之间的确切区别是什么(因为它们都有类似的概念)以及在哪里使用一个而不是另一个.
示例:
Array
 
对于Array,我们只能添加我们为此示例声明的类型int.
int[] Array = new Int[5]; //Instansiation of an array
for(int i = 0; i < Array.Length; i++)
{
   Array[i] = i + 5; //Add values to each array index
}
ArrayList
 
我们可以像Array一样添加值
ArrayList arrayList = new ArrayList();
arrayList.Add(6);
arrayList.Add(8);
List
 
再次我们可以像在Array中一样添加值
List<int> list = new List<int>();
list.Add(6);
List.Add(8);
我知道在List中你可以拥有泛型类型所以你可以传入任何你不能在数组中做的类型,但我的确切问题是:
我将每隔.01秒获得一个JSON字符串甚至更快,我必须将其插入到某个集合中,这样我以后可以遍历每一行并进行一些处理并在此之后删除该行.插入过程不断进行.我是否使用ArrayList或有点困惑Queue.
所以基本上我会插入第一个消息,然后插入第二个然后......同时另一个进程将读取第一个插入的值来处理和删除该记录,然后是第二个插入的值.请告知哪一个最快,存储量少?或者任何其他系列最符合我的要求?
编辑: 我有两种方法 -
GetMessages() - 继续在队列中获取/添加消息(此处消息仅从一个源接收,该源继续发送消息并且在我们手动停止该过程之前不会停止)
ProcessMessages() - 将读取队列记录并在处理后从队列中删除它们
简单的老派C#问题:是ArrayList一个Array还是一个List?两者之间的差异是巨大的,所以我很好奇是否有人知道ArrayList存储数据的方式?
我只是有一个问题。我注意到与 C++ 不同,C# 在数组方面有点复杂。我一直在数组中寻找的功能或技术之一是:我想以更有效和更简单的方式添加元素或从中删除元素。
举例来说,我有一个名为“食物”的数组。
string[] food = {'Bacon', 'Cheese', 'Patty', 'Crabs'}
然后我决定添加更多食物。据我所知,C# 的问题是除非您确实使用 ArrayList,否则这是不可能做到的。对于数组本身怎么样?我想使用数组作为某种库存来添加东西。
多谢!
我需要将HashSet转换为ArrayList?
$hashset = New-Object System.Collections.Generic.HashSet[int]
$hashset.Add(1)
$hashset.Add(2)
$hashset.Add(3)
$arraylist = New-Object System.Collections.ArrayList
# Now what?
给定一个正确定义的变量
$test = New-Object System.Collections.ArrayList
.Add用数组中的项目数污染管道,而.AddRange不会。
$test.Add('Single')将把计数转储到控制台。$test.AddRange(@('Single2'))无需额外努力即可干净。为什么会有不同的行为?这只是一个疏忽,还是有一些我不理解的故意行为?
鉴于.AddRange在不使用变量(已经是一个数组)时需要强制到数组,[void]$variable.Add('String')当我知道我只需要添加一项时,以及[void]$test.AddRange($variable)当我向数组添加一个数组时,即使$variable只包含一个项目,我倾向于使用,或只能包含单个项目。这里[void]不是必需的,但我想知道拥有它是否是最佳实践,当然取决于上面的答案。或者我也错过了一些东西吗?
在C#中,我可以在ArrayList中存储多种数据类型吗?喜欢;
myArrayList.Add(false);
myArrayList.Add("abc");
myarrayList.Add(26);
myArrayList.Add(obj);
我知道我可以为它制作一个DataTable或类.
但是,请告诉我:这可能吗?如果是这样的话,那么作为一个集合类的优点是什么?
我已经在几个地方读过,应该使用System.Collections.Generic命名空间中的泛型集合类而不是System.Collections命名空间中的ArrayList之类的类.我无法理解,它是如何更好的,因为两者都是收藏品?
我有这个数组,我需要它从JS转换为C#:
var allwinning = new Array(
        ["000", "001", "002"],
        ["000", "010", "020"],
        ["000", "011", "022"],
        ["000", "100", "200"],
        ["000", "101", "202"],
        ["000", "110", "220"],
        ["001", "002", "003"],
        ["001", "011", "021"])
数组必须是这样的,因为在游戏的某个时刻我将不得不逐个元素进行比较和匹配,看看你是否匹配组合以决定你是否获胜.
我应该将其转换为List<string>或转换为ArrayList?
比如说我有以下课程:
    class SuperModel
{
    private OracleProvider database;
    private SqlTemplates template;
    public SuperModel()
    {
        this.database = new OracleProvider();
        this.template = new SqlTemplates(database);
    }
    protected SqlTemplates getTemplate()
    {
        return this.template;
    }
}
现在我有以下课程扩展上述内容:
    class Henvendelser : SuperModel
{
    public Henvendelser()
    {
    }
    public ArrayList getQueue(DateTime start, DateTime end)
    {
        String sql =
                "SELECT                                                                     " +
                "   TIDSPUNKT,                                                              " +
                "   NVL(QUEUE,' ') AS QUEUE,                                                " +
                "   NVL(SUM(ANTAL_KALD),0) AS CALLS,                                        " +
                "   NVL(SUM(ANTAL_BESVARET),0) AS ANSWERED_CALLS,                           " +
                "   NVL(SUM(BESVARET_25_SEK),0) AS ANSWERED_CALLS_25_SEC, …我在c#中有程序,它显示你输入的10个数字中的最高数字.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections;
namespace Ole
{
    class Program
    {
        static void Main(string[] args)
        {
            ArrayList list = new ArrayList();
            for (int i = 0; i < 10; i++)
            {
                list.Add(Console.ReadLine());
            }
            list.Sort();
            string Max = (string)list[list.Count - 1];
            Console.WriteLine("{0}", Max);
            Console.ReadLine();
        }
    }
}
但是,命令list.Sort()仅按第一个数字对其进行排序,例如:
24444 
1212 
2222 
555 
11 
将类似于:
11
1212
2222
24444
555
如何按所有数字对列表进行排序以获得"真实"最高数字?