我有以下代码,我Stack
在自己的用户定义类中使用内置的 C#Stack1
类。一切都适用于这个用户定义的命名法。但是,一旦我更改了用户定义Stack1
类的所有引用并将其作为Stack
类调用 - 编译器就会感到困惑,并且Stack
我在其中使用的 C# 内置类user defined Stack class
不再对应于内置Systems.Collections.Stack
类。但是,回退到用户定义的StackHavingPopPushAndMinO1_2.Stack
类。你知道为什么会这样吗,有什么办法可以让我的用户定义的 Stack 类名保持不变,Stack
并且仍然使用其中的内置Systems.Collections.Stack
类吗?
请参阅:我已经通过使用System.Collections.Generic.Stack<int>
我的用户定义Stack
类中的类解决了这个问题。但我的意图是我不想更改我的用户定义Stack
类的名称 - 并且仍然使用其中的内置Systems.Collection.Stack
类。
请参阅:我还创建了一个别名System.Collections
并将其附加到Stack
我正在使用的内置类中。但我只是想知道是否有其他方法可以使用我的用户定义Stack
类,其中包含内置Systems.Collections.Stack
类。
以下是代码:
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StackHavingPopPushAndMinO1_2
{
class Stack1
{
Stack mainStack = new Stack();
Stack supportingStack = new Stack();
public void Push(int value)
{
mainStack.Push(value);
if(supportingStack.Count==0 || value <= (int) supportingStack.Peek())
{
supportingStack.Push(value);
}
}
public int Pop()
{
int value = -1;
if(mainStack.Count>0)
{
value = (int) mainStack.Pop();
if (value == (int) supportingStack.Peek())
supportingStack.Pop();
}
return value;
}
public int Min()
{
if (supportingStack.Count > 0)
return (int) supportingStack.Peek();
return -1;
}
}
class Program
{
static void Main(string[] args)
{
Stack1 stack = new Stack1();
stack.Push(60);
stack.Push(10);
stack.Push(50);
Console.WriteLine(stack.Min());
stack.Push(80);
stack.Push(9);
stack.Push(11);
Console.WriteLine(stack.Min());
}
}
}
用户定义的类一切正常Stack1
。但是,一旦我将名称更改为Stack1
to Stack
,编译器就会感到困惑,并且由于名称冲突而出现错误。对此的任何启示都将非常有帮助。为什么 C# 编译器不知道用户定义Stack
类和内置Stack
类之间的区别?