我正在使用自己的自定义堆栈类,正在尝试创建用于创建新堆栈(通用对象)的通用方法。我使用int类型的堆栈进行了大量工作,仅偶尔需要其他类型。我可以将T的默认类型设置为int吗?
方法如下:
public static Stack<T> newStack<T>(int length)
{
Stack<T> s = new Stack<T>();
for (int i = 0; i < length; i++)
{
Console.WriteLine("print num");
string input = Console.ReadLine();
T value = (T)Convert.ChangeType(input, typeof(T));
s.Push(value);
}
return s;
}
我想使用这样的方法:
newStack(5);//defult int type
和任何其他类型
newStack<string>(5)
有人可以帮忙吗?谢谢。
您不能为T指定默认类型,但是您可以简单地重载该newStack
方法以获得所需的行为。重载的方法将自动创建一个类型为的新堆栈int
。
您的代码如下所示:
public static Stack<T> newStack<T>(int length)
{
Stack<T> s = new Stack<T>();
for (int i = 0; i < length; i++)
{
Console.WriteLine("print num");
string input = Console.ReadLine();
T value = (T)Convert.ChangeType(input, typeof(T));
s.Push(value);
}
return s;
}
public static Stack<int> newStack(int length)
{
// Call our original new stack method but pass
// integer as the type T
return newStack<int>(length);
}
现在,如果您只想创建一个整数类型的新堆栈,则可以调用第二种方法:
newStack(5);
否则,您可以使用以下方法创建其他类型的堆栈:
newStack<string>(5);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句