public bool TryGetValue(TKey key, out TItem item) { CommonExceptions.CheckArgumentNull(key, "key"); Contract.EndContractBlock(); return(this.dict.TryGetValue(key, out item)); }
/// <summary> /// 从当前集合内移除指定集合中的所有元素。 /// </summary> /// <param name="other">要从集合内移除的项的集合。</param> /// <exception cref="ArgumentNullException"> /// <paramref name="other"/> 为 <c>null</c>。</exception> public virtual void ExceptWith(IEnumerable <T> other) { CommonExceptions.CheckArgumentNull(other, "other"); Contract.EndContractBlock(); this.items.ExceptWith(other); }
/// <summary> /// 从 <see cref="KeyedCollectionBase{TKey,TItem}"/> 中移除具有指定键的元素。 /// </summary> /// <param name="key">要移除的元素的键。</param> /// <returns>如果已从 <see cref="KeyedCollectionBase{TKey,TItem}"/> 中成功移除元素, /// 则为 <c>true</c>;否则为 <c>false</c>。如果在原始 <see cref="KeyedCollectionBase{TKey,TItem}"/> /// 中没有找到指定的键,该方法也会返回 <c>false</c>。</returns> /// <exception cref="ArgumentNullException"><paramref name="key"/> 为 <c>null</c>。</exception> /// <overloads> /// <summary> /// 从 <see cref="KeyedCollectionBase{TKey,TItem}"/> 中移除特定元素。 /// </summary> /// </overloads> public virtual bool Remove(TKey key) { CommonExceptions.CheckArgumentNull(key, nameof(key)); Contract.EndContractBlock(); return(dict.Remove(key)); }
public virtual bool IsProperSupersetOf(IEnumerable <T> other) { CommonExceptions.CheckArgumentNull(other, "other"); Contract.EndContractBlock(); return(this.items.IsProperSubsetOf(other)); }
public virtual bool SetEquals(IEnumerable <T> other) { CommonExceptions.CheckArgumentNull(other, "other"); Contract.EndContractBlock(); return(this.items.SetEquals(other)); }
/// <summary> /// 为当前源文件位置附加源文件名。 /// </summary> /// <param name="fileName">源文件的名称。</param> /// <returns>表示指定源文件中的指定范围的实例。</returns> public SourceFileRange WithFile(string fileName) { CommonExceptions.CheckArgumentNull(fileName, nameof(fileName)); Contract.EndContractBlock(); return(new SourceFileRange(fileName, start, end)); }
/// <summary> /// 确定缓存中是否包含指定的键。 /// </summary> /// <param name="key">要在缓存中查找的键。</param> /// <returns>如果缓存中包含具有指定键的元素,则为 <c>true</c>;否则为 <c>false</c>。</returns> /// <exception cref="ArgumentNullException"><paramref name="key"/> 为 <c>null</c>。</exception> public bool Contains(TKey key) { CommonExceptions.CheckArgumentNull(key, "key"); Contract.EndContractBlock(); return(cacheDict.ContainsKey(key)); }
/// <summary> /// 将指定的常量写入 IL 中。一些常量(如自定义类)不能写入到 IL 中,此时需要使用闭包来实现。 /// </summary> /// <param name="il">IL 指令生成器。</param> /// <param name="value">要写入的常量。</param> /// <returns>如果常量成功写入到 IL 中,则为 <c>true</c>;否则为 <c>false</c>。</returns> /// <exception cref="ArgumentNullException"><paramref name="il"/> 为 <c>null</c>。</exception> /// <overloads> /// <summary> /// 将指定的常量写入 IL 中。 /// </summary> /// </overloads> public static bool EmitConstant(this ILGenerator il, object value) { CommonExceptions.CheckArgumentNull(il, "il"); Contract.EndContractBlock(); return(il.EmitConstant(value, value == null ? null : value.GetType())); }
/// <summary> /// 写入指定的 <see cref="bool"/> 常量。 /// </summary> /// <param name="il">IL 指令生成器。</param> /// <param name="value">要写入的常量。</param> /// <exception cref="ArgumentNullException"><paramref name="il"/> 为 <c>null</c>。</exception> public static void EmitConstant(this ILGenerator il, bool value) { CommonExceptions.CheckArgumentNull(il, "il"); Contract.EndContractBlock(); il.Emit(value ? OpCodes.Ldc_I4_1 : OpCodes.Ldc_I4_0); }
public static void EmitConstant(this ILGenerator il, uint value) { CommonExceptions.CheckArgumentNull(il, "il"); Contract.EndContractBlock(); il.EmitInt((int)value); }
/// <summary> /// 写入指定的 <see cref="double"/> 常量。 /// </summary> /// <param name="il">IL 指令生成器。</param> /// <param name="value">要写入的常量。</param> /// <exception cref="ArgumentNullException"><paramref name="il"/> 为 <c>null</c>。</exception> public static void EmitConstant(this ILGenerator il, double value) { CommonExceptions.CheckArgumentNull(il, "il"); Contract.EndContractBlock(); il.Emit(OpCodes.Ldc_R8, value); }
/// <summary> /// 写入指定的 <see cref="float"/> 常量。 /// </summary> /// <param name="il">IL 指令生成器。</param> /// <param name="value">要写入的常量。</param> /// <exception cref="ArgumentNullException"><paramref name="il"/> 为 <c>null</c>。</exception> public static void EmitConstant(this ILGenerator il, float value) { CommonExceptions.CheckArgumentNull(il, nameof(il)); Contract.EndContractBlock(); il.Emit(OpCodes.Ldc_R4, value); }
/// <summary> /// 写入指定的 <see cref="int"/> 常量。 /// </summary> /// <param name="il">IL 指令生成器。</param> /// <param name="value">要写入的常量。</param> /// <exception cref="ArgumentNullException"><paramref name="il"/> 为 <c>null</c>。</exception> public static void EmitConstant(this ILGenerator il, int value) { CommonExceptions.CheckArgumentNull(il, nameof(il)); Contract.EndContractBlock(); il.EmitInt(value); }
/// <summary> /// 返回指定的 <see cref="ISourceLocatable"/> 是否与当前范围存在重叠。 /// </summary> /// <param name="locatable">要检查的范围。</param> /// <returns>如果指定的范围与当前范围存在重叠,则为 <c>true</c>;否则为 <c>false</c>。 /// 对于未知的范围,也会返回 <c>false</c>。</returns> /// <exception cref="ArgumentNullException"><paramref name="locatable"/> 为 <c>null</c>。</exception> public bool OverlapsWith(ISourceLocatable locatable) { CommonExceptions.CheckArgumentNull(locatable, nameof(locatable)); Contract.EndContractBlock(); return(!IsUnknown && start <= locatable.End && end >= locatable.Start); }
/// <summary> /// 初始化 <see cref="BitList"/> 类的新实例, /// 该实例包含从指定集合复制的元素。 /// </summary> /// <param name="collection">一个集合,其元素被复制到新列表中。</param> /// <exception cref="ArgumentNullException"><paramref name="collection"/> 为 <c>null</c>。</exception> public BitList([NotNull] IEnumerable <bool> collection) : this(0) { CommonExceptions.CheckArgumentNull(collection, nameof(collection)); Contract.EndContractBlock(); AddRange(collection); }
private static TOutput ConvertToEnum <TOutput>(string value) { CommonExceptions.CheckArgumentNull(value, nameof(value)); Contract.EndContractBlock(); return((TOutput)Enum.Parse(typeof(TOutput), value)); }
/// <summary> /// 将指定集合的元素添加到 <see cref="BitList"/> 的末尾。 /// </summary> /// <param name="collection">一个集合,其元素应被添加到 /// <see cref="BitList"/> 的末尾,其中每个整数表示 32 个连续位。</param> /// <exception cref="ArgumentNullException"><paramref name="collection"/> 为 <c>null</c>。</exception> public void AddRange([NotNull] IEnumerable <int> collection) { CommonExceptions.CheckArgumentNull(collection, nameof(collection)); Contract.EndContractBlock(); InsertRange(_count, collection); }
/// <summary> /// 随机打乱转序列中元素的顺序。 /// </summary> /// <typeparam name="TSource"><paramref name="source"/> 中的元素的类型。 /// </typeparam> /// <param name="source">要随机打乱顺序的值序列。</param> /// <returns>一个序列,其元素以随机顺序对应于输入序列的元素。</returns> /// <exception cref="ArgumentNullException"><paramref name="source"/> 为 <c>null</c>。</exception> public static IEnumerable <TSource> RandomOrder <TSource>(this IEnumerable <TSource> source) { CommonExceptions.CheckArgumentNull(source, nameof(source)); Contract.EndContractBlock(); return(source.ToArray().Random()); }