Microsoft.Scripting.MutableTuple.GetSize C# (CSharp) Méthode

GetSize() public static méthode

Gets the number of usable slots in the provided Tuple type including slots available in nested tuples.
public static GetSize ( Type tupleType ) : int
tupleType System.Type
Résultat int
        public static int GetSize(Type tupleType) {
            ContractUtils.RequiresNotNull(tupleType, "tupleType");

            int count = 0;
            lock(_sizeDict) if (_sizeDict.TryGetValue(tupleType, out count)) return count;
            Stack<Type> types = new Stack<Type>(tupleType.GetGenericArguments());            

            while (types.Count != 0) {
                Type t = types.Pop();

                if (typeof(MutableTuple).IsAssignableFrom(t)) {
                    foreach (Type subtype in t.GetGenericArguments()) {
                        types.Push(subtype);
                    }
                    continue;
                }

                if (t == typeof(DynamicNull)) continue;

                count++;
            }

            lock (_sizeDict) _sizeDict[tupleType] = count;
            return count;
        }