Cis*_*ran 5 c# generics namespaces
我正在尝试创建一个程序,它将创建一个向量,生成100个随机数(0 - 99)然后询问用户输入他们是否希望数字从高到低或从低到高排序.
这是我到目前为止只是试图让矢量工作的代码.
using System;
using System.Collections.Generic;
using System.Collections.Generic.List; //this is where the error comes.
using System.Linq;
using System.Text;
namespace System.Collections.Generic
{
class List<T>
{
static void Main(string[] args)
{
List<int> vectorList = new List<int>();
vectorList.Capacity(100);
int i = 100;
for (int x = 0; x <= 100; x++)
{
Random rand = new Random();
i = rand.Next(0, 100);
vectorList.Add(i);
Console.WriteLine(i);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
除了我不知道如何解决这个问题,任何帮助将不胜感激.
删除该using
行; List
是一个类,而不是命名空间,因此您不必"使用"它.
你的Main()
方法也应属于自己的类; C#不允许重新定义现有类以添加Main()
方法.
此外,Joel Coehoorn的回答将解决你所拥有的问题,我相信你using
首先将这条线放在那里,并且LBushkin的建议值得注意.
这是一个侧面问题(BoltClock正确),但改变这个:
List<int> vectorList = new List<int>();
vectorList.Capacity(100);
Run Code Online (Sandbox Code Playgroud)
对此:
List<int> vectorList = new List<int>(100);
Run Code Online (Sandbox Code Playgroud)
另外,<T>
从您的班级名称中删除.
你在这里做的一些事情并不是一个好主意,并且直接导致你将要获得的一些错误.
首先,在C#中,该using
指令旨在标识您将依赖的整个命名空间 - 以及该命名空间中公开的所有类型.这条线
using System.Collections.Generic.List
Run Code Online (Sandbox Code Playgroud)
不是指代名称空间,而是指类型(List<T>
) - 并且不合适.
接下来,您尝试创建一个泛型类List<T>
作为您的程序的主类......并且在System.Collections.Generic
命名空间中也不例外.好吧,这将与现有的.NET List<T>
类冲突- 所以你也会从中获得错误.
你真正想要做的是创建一个与你正在编写的程序相关联(或描述)的命名空间.不要为此目的尝试重用现有的.NET框架名称.不要为你的班级命名List<T>
.
最后,您的类实际上不是泛型类...类型参数T
不用于程序代码中的任何目的.而你的类不是列表的实现......它是一个ListProcessor(或者沿着这些行的东西).在程序中命名类或接口时应该小心,以便它们与命名的内容有很强的关系.避免创建与.NET框架中的公共类已经使用过的名称冲突的名称(如果可能的话)也是一个好主意 - 因为这可能会导致代码中出现歧义和混淆.