📄 abstractcontainer.cs
字号:
namespace Opus6
{
using System;
using System.Collections;
using System.Text;
[Version("$Id: AbstractContainer.cs,v 1.8 2001/10/28 19:50:08 brpreiss Exp $"), Copyright("Copyright (c) 2001 by Bruno R. Preiss, P.Eng.")]
public abstract class AbstractContainer : ComparableObject, Container, IComparable, IEnumerable
{
protected AbstractContainer()
{
}
public virtual void Accept(Visitor visitor)
{
IEnumerator enumerator1 = this.GetEnumerator();
while (enumerator1.MoveNext() && !visitor.IsDone)
{
visitor.Visit(enumerator1.Current);
}
}
public abstract IEnumerator GetEnumerator();
public override int GetHashCode()
{
Visitor visitor1 = new HashCodeVisitor();
this.Accept(visitor1);
return (base.GetType().GetHashCode() + visitor1.GetHashCode());
}
public abstract void Purge();
public override string ToString()
{
Visitor visitor1 = new Opus6.AbstractContainer.ToStringVisitor();
this.Accept(visitor1);
return string.Concat(new object[] { base.GetType().FullName, " {", visitor1, "}" });
}
public virtual int Count
{
get
{
return this.count;
}
}
public virtual bool IsEmpty
{
get
{
return (this.Count == 0);
}
}
public virtual bool IsFull
{
get
{
return false;
}
}
protected int count;
private class HashCodeVisitor : AbstractVisitor
{
public HashCodeVisitor()
{
this.result = 0;
}
public override int GetHashCode()
{
return this.result;
}
public override void Visit(object obj)
{
this.result += obj.GetHashCode();
}
private int result;
}
private class ToStringVisitor : AbstractVisitor
{
public ToStringVisitor()
{
this.builder = new StringBuilder();
this.comma = false;
}
public override string ToString()
{
return this.builder.ToString();
}
public override void Visit(object obj)
{
if (this.comma)
{
this.builder.Append(", ");
}
this.builder.Append(obj);
this.comma = true;
}
private StringBuilder builder;
private bool comma;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -