本文整理汇总了C#中Counter.Add方法的典型用法代码示例。如果您正苦于以下问题:C# Counter.Add方法的具体用法?C# Counter.Add怎么用?C# Counter.Add使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Counter
的用法示例。
在下文中一共展示了Counter.Add方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Main
static void Main()
{
Counter c = new Counter();
c.Add(3);
c.Add(5);
Console.WriteLine( "val = " + c.Val() );
}
示例2: RareWordHandler
public RareWordHandler(List<PhrasalTree> treebank, int rareThr)
{
Counter<string> wordCounts = new Counter<string>();
foreach (var tree in treebank)
{
var words = tree.GetSentence().Split(new string[] { " ", "\t" }, StringSplitOptions.RemoveEmptyEntries);
for (int i = 0; i < words.Length; ++i)
{
words[i] = SimpleTokenizor.ETokenize(words[i]);
}
foreach (var w in words)
{
wordCounts.Add(w);
}
}
Dictionary<string, HashSet<string>> tagWords = new Dictionary<string, HashSet<string>>();
foreach (var tree in treebank)
{
var words = tree.GetSentence().Split(new string[] { " ", "\t" }, StringSplitOptions.RemoveEmptyEntries);
for (int i = 0; i < words.Length; ++i)
{
words[i] = SimpleTokenizor.ETokenize(words[i]);
}
var tags = tree.GetPOS().Split(new string[] { " ", "\t" }, StringSplitOptions.RemoveEmptyEntries);
for (int i = 0; i < words.Length; ++i)
{
if (wordCounts[words[i]] > rareThr)
{
continue;
}
Counter<string> wtcs;
if (!wordTagCount.TryGetValue(words[i], out wtcs))
{
wtcs = new Counter<string>();
wordTagCount.Add(words[i], wtcs);
}
wtcs.Add(tags[i]);
tagCount.Add(tags[i]);
if (!tagWords.ContainsKey(tags[i]))
{
tagWords.Add(tags[i], new HashSet<string>());
}
tagWords[tags[i]].Add(words[i]);
}
}
foreach (var kv in tagWords)
{
tagTypeCount.Add(kv.Key, kv.Value.Count);
}
}
示例3: TestEvent
public static void TestEvent()
{
// Событие, это не что иное, как ситуация, при возникновении которой, произойдет действие или несколько действий. Говоря языком программного моделирования, Событие — это именованный делегат, при вызове которого, будут запущены все подписавшиеся на момент вызова события методы заданной сигнатуры.
// Эта трактовка хоть и раскрывает всю суть структуры события, но не только сбивает с толку начинающих «шарп-прогеров», но и не дает возможность рационально представить в программистской голове весь смысл.
// пределено три класса. Первый класс будет считать до 100, используя цикл. Два других класса будут ждать, когда в первом классе счетчик досчитает, например, до 71, и после этого каждый выведет в консоль фразу «Пора действовать, ведь уже 71!». Проще говоря, при обнаружении значения 71, вызовутся по методу, соответственно для каждого класса. Разложим все по полкам.
// события (event) основаны на делегатах (delegate), а делегат, говоря очень простым языком — «переменная, хранящая ссылку на метод».
// Далее, мы создаем событие при помощи ключевого слова event и связываем его с этим делегатом (MethodContainer), а, следовательно, c методами, имеющими сигнатуру void (void). Событие должно быть public, т.к. его должны использовать разные классы, которым нужно как-то отреагировать (классы Handler_I и Handler_II).
ClassCounter Counter = new ClassCounter();
Handler_I Handler1 = new Handler_I();
Handler_II Handler2 = new Handler_II();
//Подписались на событие
Counter.onCount += Handler1.Message;
Counter.onCount += Handler2.Message;
//Запустили счетчик
Counter.Count();
// Класс, в котором вы создаете событие (генерируете) называется классом-издателем, а классы, чьи методы подписываются на это событие при помощи "+=" — классами-подписчиками.
// Вы всегда можете отписаться, используя оператор "-="
// Преимущество Событий очевидно: классу-издателю, генерирующему событие не нужно знать, сколько классов-подписчиков подпишется или отпишется. Он создал событие для определенных методов, ограничив их делегатом по определенной сигнатуре. События широко используются для составления собственных компонентов управления (кнопок, панелей, и т.д.).
// Пару слов о .NET-событиях. Microsoft упростила задачу конструирования делегатов: .NET предлагает готовый делегат EventHandler и т.н. «пакет» входных параметров EventArgs. Желаете событие? Берете готовый EventHandler, определяетесь в параметрах, «запихиваете» их в класс, а класс наследуете от EventArgs. А дальше — как по расписанию)
// EventHandler<TEventArgs> - делегат
// Represents the method that will handle an event when the event provides data.
// [SerializableAttribute]
// public delegate void EventHandler<TEventArgs>(
// object sender,
// TEventArgs e
// )
// sender - The source of the event.
// e - Type: TEventArgs. An object that contains the event data.
// TEventArgs - The type of the event data generated by the event.
// The event model in the .NET Framework is based on having an event delegate that connects an event with its handler.To raise an event, two elements are needed:
// - A delegate that refers to a method that provides the response to the event.
// - Optionally, a class that holds the event data, if the event provides data.
// The advantage of using EventHandler<TEventArgs> is that you do not need to code your own custom delegate if your event generates event data.You simply provide the type of the event data object as the generic parameter.
Counter c = new Counter(new Random().Next(10));
c.ThresholdReached += c_ThresholdReached;
Console.WriteLine("press 'a' key to increase total");
while (Console.ReadKey(true).KeyChar == 'a')
{
Console.WriteLine("adding one");
c.Add(1);
}
// All events in the .NET Framework class library are based on the EventHandler delegate, which is defined as follows:
// public delegate void EventHandler(object sender, EventArgs e);
// To publish events based on the EventHandler pattern
MyPublisher pub = new MyPublisher();
Subscriber sub1 = new Subscriber("sub1", pub);
Subscriber sub2 = new Subscriber("sub2", pub);
// Call the method that raises the event.
pub.DoSomething();
// Keep the console window open
Console.WriteLine("Press Enter to close this window.");
Console.ReadLine();
}
示例4: CollapseUnaryRules
public static void CollapseUnaryRules(PhrasalNode node, Counter<string> unaryRuleCount)
{
if (node == null || node.Children.Count == 0)
{
return;
}
if (node.Children.Count == 1)
{
var ulist = new List<PhrasalNode>();
ulist.Add(node.Children[0]);
var xnode = node.Children[0];
while (xnode.Children.Count == 1)
{
ulist.Add(xnode.Children[0]);
xnode = xnode.Children[0];
}
StringBuilder sb = new StringBuilder(node.Tag);
foreach (var x in ulist)
{
sb.Append('\t');
sb.Append(x.Tag);
}
unaryRuleCount.Add(sb.ToString());
node.Children.Clear();
xnode = ulist[ulist.Count - 1];
if (node.Tag != xnode.Tag)
{
node.Children.Add(ulist[ulist.Count - 1]);
}
else
{
foreach (var c in xnode.Children)
{
node.Children.Add(c);
}
}
}
foreach (var chd in node.Children)
{
CollapseUnaryRules(chd, unaryRuleCount);
}
}
示例5: CollectPerTagInfo
private static void CollectPerTagInfo(ScopeTreeNode node, Dictionary<string, Counter> perTagInfo)
{
if (node.Name != null)
{
if (perTagInfo.ContainsKey(node.Name))
{
perTagInfo[node.Name].Add(node.TotalBytes);
}
else
{
var c = new Counter();
c.Add(node.TotalBytes);
perTagInfo.Add(node.Name, c);
}
}
foreach (var child in node.Children) CollectPerTagInfo(child, perTagInfo);
}