contextstack.cs

来自「没的 没的 没的 没的 没的 没的 没的 没的 没的 没的 没的 没的 没的 没」· CS 代码 · 共 129 行

CS
129
字号
/* * ContextStack.cs - Implementation of the *		"System.ComponentModel.Design.Serialization.ContextStack" class. * * Copyright (C) 2003  Southern Storm Software, Pty Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */namespace System.ComponentModel.Design.Serialization{#if CONFIG_COMPONENT_MODEL_DESIGNpublic sealed class ContextStack{	// Internal state.	private Object[] stack;	private int size;	// Constructor.	public ContextStack()			{				stack = null;				size = 0;			}	// Get the current object on the context stack.	public Object Current			{				get				{					if(size > 0)					{						return stack[size - 1];					}					else					{						return null;					}				}			}	// Get the first object on the context stack of a particular type.	public Object this[Type type]			{				get				{					int posn = size - 1;					while(posn >= 0)					{						if(type.IsAssignableFrom(stack[posn].GetType()))						{							return stack[posn];						}						--posn;					}					return null;				}			}	// Get the object "level" items down the context stack.	public Object this[int level]			{				get				{					if(level < size)					{						return stack[size - 1 - level];					}					else					{						return null;					}				}			}	// Pop the top-most item from the context stack.	public Object Pop()			{				if(size > 0)				{					--size;					return stack[size];				}				else				{					return null;				}			}	// Push a new object onto the context stack.	public void Push(Object context)			{				if(context == null)				{					throw new ArgumentNullException("context");				}				if(stack == null)				{					stack = new Object [16];				}				else if(size >= stack.Length)				{					Object[] newStack = new Object [size * 2];					Array.Copy(stack, 0, newStack, 0, size);					stack = newStack;				}				stack[size++] = context;			}}; // class ContextStack#endif // CONFIG_COMPONENT_MODEL_DESIGN}; // namespace System.ComponentModel.Design.Serialization

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?