本文整理汇总了C#中HashSet.Skip方法的典型用法代码示例。如果您正苦于以下问题:C# HashSet.Skip方法的具体用法?C# HashSet.Skip怎么用?C# HashSet.Skip使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类HashSet
的用法示例。
在下文中一共展示了HashSet.Skip方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GetFreePort
public static ushort GetFreePort()
{
var ipGlobalProperties = IPGlobalProperties.GetIPGlobalProperties();
var tcpConnInfoArray = ipGlobalProperties.GetActiveTcpConnections();
var usedPorts = new HashSet<ushort>(tcpConnInfoArray.Select(x => (ushort)x.LocalEndPoint.Port));
var availablePorts = new HashSet<ushort>(Enumerable.Range(1024, 65535 - 1024).Select(x => (ushort)x));
availablePorts.ExceptWith(usedPorts);
return availablePorts.Skip(new Random().Next(availablePorts.Count - 1)).First();
}
示例2: GetInScopeNodesForInport
/// <summary>
/// Get all nodes that in its input ports's scope. A node is in its
/// scope if that node is one of its upstream nodes.
/// </summary>
/// <param name="portIndex">Inport index</param>
/// <param name="checkEscape">
/// If need to exclude nodes that one of their downstream nodes are not
/// in the scope
/// </param>
/// <param name="isInclusive">
/// If a upstream node is ScopedNodeModel, need to include all upstream
/// nodes of that node.
/// </param>
/// <returns></returns>
public IEnumerable<NodeModel> GetInScopeNodesForInport(
int portIndex,
bool checkEscape = true,
bool isInclusive = true,
bool forceToGetNodeForInport = false)
{
// The related test cases are in DynmoTest.ScopedNodeTest.
var scopedNodes = new HashSet<NodeModel>();
Tuple<int, NodeModel> inputTuple = null;
if ((!forceToGetNodeForInport && !IsScopedInport(portIndex)) ||
!this.TryGetInput(portIndex, out inputTuple))
{
return scopedNodes;
}
scopedNodes.Add(this);
var inputNode = inputTuple.Item2;
var workingList = new Queue<NodeModel>();
if (!checkEscape || (checkEscape && IsNodeInScope(inputNode, scopedNodes)))
{
workingList.Enqueue(inputNode);
scopedNodes.Add(inputNode);
}
// Collect all upstream nodes in BFS order
while (workingList.Any())
{
var currentNode = workingList.Dequeue();
if (!isInclusive && currentNode is ScopedNodeModel)
{
continue;
}
foreach (int index in Enumerable.Range(0, currentNode.InPortData.Count))
{
if (currentNode.TryGetInput(index, out inputTuple))
{
inputNode = inputTuple.Item2;
if (!checkEscape || (checkEscape && IsNodeInScope(inputNode, scopedNodes)))
{
workingList.Enqueue(inputNode);
scopedNodes.Add(inputNode);
}
}
}
}
return scopedNodes.Skip(1);
}
示例3: GenerateVMTCode
//.........这里部分代码省略.........
{
if (xMap.InterfaceMethods[k] == xMethodIntf)
{
xActualMethod = xMap.TargetMethods[k];
break;
}
}
}
}
catch
{
}
}
if (aMethodsSet.Contains(xMethodIntf))
{
if (!xEmittedMethods.ContainsKey(xMethodIntf))
{
xEmittedMethods.Add(xMethodIntf, true);
}
}
}
}
int? xBaseIndex = null;
if (xType.BaseType == null)
{
xBaseIndex = (int)aGetTypeID(xType);
}
else
{
for (int t = 0; t < aTypesSet.Count; t++)
{
// todo: optimize check
var xItem = aTypesSet.Skip(t).First();
if (xItem.ToString() == xType.BaseType.ToString())
{
xBaseIndex = (int)aGetTypeID(xItem);
break;
}
}
}
if (xBaseIndex == null)
{
throw new Exception("Base type not found!");
}
for (int x = xEmittedMethods.Count - 1; x >= 0; x--)
{
if (!aMethodsSet.Contains(xEmittedMethods.Keys[x]))
{
xEmittedMethods.RemoveAt(x);
}
}
if (!xType.IsInterface)
{
Push(aGetTypeID(xType));
Move("VMT__TYPE_ID_HOLDER__" + DataMember.FilterStringForIncorrectChars(LabelName.GetFullName(xType) + " ASM_IS__" + xType.Assembly.GetName().Name), (int)aGetTypeID(xType));
Cosmos.Assembler.Assembler.CurrentInstance.DataMembers.Add(
new DataMember("VMT__TYPE_ID_HOLDER__" + DataMember.FilterStringForIncorrectChars(LabelName.GetFullName(xType) + " ASM_IS__" + xType.Assembly.GetName().Name), new int[] { (int)aGetTypeID(xType) }));
Push((uint)xBaseIndex.Value);
xData = new byte[16 + (xEmittedMethods.Count * 4)];
xTemp = BitConverter.GetBytes(aGetTypeID(typeof(Array)));
Array.Copy(xTemp, 0, xData, 0, 4);
xTemp = BitConverter.GetBytes(0x80000002); // embedded array
Array.Copy(xTemp, 0, xData, 4, 4);
xTemp = BitConverter.GetBytes(xEmittedMethods.Count); // embedded array
Array.Copy(xTemp, 0, xData, 8, 4);
示例4: FetchUrlInfos
protected async Task FetchUrlInfos(Status[] ses)
{
if (ses == null || ses.Length == 0)
return;
var mem = MemoryCache.Default;
var urls = new HashSet<string>();
foreach (var s in ses)
{
var us = Utils.ExtractUrlFromWeibo(s.text);
foreach(var url in us)
{
if (mem.Get("http://t.cn/" + url) == null)
urls.Add(url);
}
//urls.Add(us);
if (s.retweeted_status != null)
{
var rus = Utils.ExtractUrlFromWeibo(s.retweeted_status.text);
foreach (var url in rus)
{
if (mem.Get("http://t.cn/" + url) == null)
urls.Add(url);
}
}
}
if(urls.Count >= 20)
{
var tasks = new Task[2];
var u1 = urls.Take(20);
tasks[0] = FetchUrlInfosImp(u1);
var u2 = urls.Skip(20);
tasks[1] = FetchUrlInfosImp(u2);
await Task.WhenAll(tasks);
}else
{
await FetchUrlInfosImp(urls);
}
}
示例5: DoAggRuthAgentManager
//.........这里部分代码省略.........
PotentialMissions.Add(AgentMission.StealTech);
PotentialMissions.Add(AgentMission.Robbery);
//PotentialMissions.Add(AgentMission.Infiltrate);
}
}
if (this.empire.GetRelations()[Target].Posture == Posture.Hostile)
{
if (agent.Level >= 8)
{
PotentialMissions.Add(AgentMission.StealTech);
PotentialMissions.Add(AgentMission.Assassinate);
}
if (agent.Level >= 4)
{
PotentialMissions.Add(AgentMission.Robbery);
PotentialMissions.Add(AgentMission.Sabotage);
}
if (agent.Level < 4)
{
PotentialMissions.Add(AgentMission.Sabotage);
}
}
if (this.empire.GetRelations()[Target].SpiesDetected > 0)
{
if (agent.Level >= 4) PotentialMissions.Add(AgentMission.Assassinate);
}
HashSet<AgentMission> remove = new HashSet<AgentMission>();
foreach(AgentMission mission in PotentialMissions)
{
switch (mission)
{
case AgentMission.Defending:
case AgentMission.Training:
break;
case AgentMission.Infiltrate:
if (ResourceManager.AgentMissionData.InfiltrateCost > this.spyBudget)
{
remove.Add(mission);
}
break;
case AgentMission.Assassinate:
if (ResourceManager.AgentMissionData.AssassinateCost > this.spyBudget)
{
remove.Add(mission);
}
break;
case AgentMission.Sabotage:
if (ResourceManager.AgentMissionData.SabotageCost > this.spyBudget)
{
remove.Add(mission);
}
break;
case AgentMission.StealTech:
if (ResourceManager.AgentMissionData.StealTechCost > this.spyBudget)
{
remove.Add(mission);
}
break;
case AgentMission.Robbery:
if (ResourceManager.AgentMissionData.RobberyCost > this.spyBudget)
{
remove.Add(mission);
}
break;
case AgentMission.InciteRebellion:
if (ResourceManager.AgentMissionData.RebellionCost > this.spyBudget)
{
remove.Add(mission);
}
break;
case AgentMission.Undercover:
if (ResourceManager.AgentMissionData.InfiltrateCost > this.spyBudget)
{
remove.Add(mission);
}
break;
case AgentMission.Recovering:
break;
default:
break;
}
}
foreach(AgentMission removeMission in remove)
{
PotentialMissions.Remove(removeMission);
}
if (PotentialMissions.Count <= 0)
{
continue;
}
AgentMission am = PotentialMissions.Skip(HelperFunctions.GetRandomIndex(PotentialMissions.Count)).FirstOrDefault();
if(am !=null)
agent.AssignMission(am, this.empire, Target.data.Traits.Name);
Offense++;
}
}