예제 #1
0
 public bool TryGetValue(TKey key, out TItem item)
 {
     CommonExceptions.CheckArgumentNull(key, "key");
     Contract.EndContractBlock();
     return(this.dict.TryGetValue(key, out item));
 }
예제 #2
0
 /// <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);
 }
예제 #3
0
 /// <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));
 }
예제 #4
0
 public virtual bool IsProperSupersetOf(IEnumerable <T> other)
 {
     CommonExceptions.CheckArgumentNull(other, "other");
     Contract.EndContractBlock();
     return(this.items.IsProperSubsetOf(other));
 }
예제 #5
0
 public virtual bool SetEquals(IEnumerable <T> other)
 {
     CommonExceptions.CheckArgumentNull(other, "other");
     Contract.EndContractBlock();
     return(this.items.SetEquals(other));
 }
예제 #6
0
 /// <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));
 }
예제 #7
0
 /// <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));
 }
예제 #8
0
 /// <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()));
 }
예제 #9
0
 /// <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);
 }
예제 #10
0
 public static void EmitConstant(this ILGenerator il, uint value)
 {
     CommonExceptions.CheckArgumentNull(il, "il");
     Contract.EndContractBlock();
     il.EmitInt((int)value);
 }
예제 #11
0
 /// <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);
 }
예제 #12
0
 /// <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);
 }
예제 #13
0
 /// <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);
 }
예제 #14
0
 /// <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);
 }
예제 #15
0
 /// <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);
 }
예제 #16
0
 private static TOutput ConvertToEnum <TOutput>(string value)
 {
     CommonExceptions.CheckArgumentNull(value, nameof(value));
     Contract.EndContractBlock();
     return((TOutput)Enum.Parse(typeof(TOutput), value));
 }
예제 #17
0
 /// <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);
 }
예제 #18
0
 /// <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());
 }