Я получаю различные ошибки, например:
Ошибка (активная) CS0234
Тип или имя пространства имен «IDictionaryDebugView» не существует в пространстве имен «System.Diagnostics» (вам не хватает ссылки на сборку?) DictionaryTest1 C:\Users\ Erik\source\repos\DictionaryTest1\DictionaryTest1\Dictionary.cs
Ошибка (активная) CS0103
Имя «ThrowHelper» не существует в текущем контексте DictionaryTest1 C:\Users\Erik\source\repos\DictionaryTest1\DictionaryTest1\Dictionary.cs
Ошибка (активная) CS0103
Имя «ExceptionArgument» не существует в текущем контексте DictionaryTest1 C:\Users\Erik\source\repos\DictionaryTest1\DictionaryTest1\Dictionary.cs>
Ошибка (активная) CS0103
Имя «NonRandomizedStringEqualityComparer» не существует в текущий контекст DictionaryTest1 C:\Users\Erik\source\repos\DictionaryTest1\DictionaryTest1\Dictionary.cs
Мой вопрос: как мне решить эту проблему? четыре ошибки, без необходимости загружать их исходный код (снова) и перекомпилировать эти библиотеки?
Не могу ли я вместо этого просто включить пространство имен или файлы DLL?
Я получил Dictionary.cs из: https://github.com/microsoft/references ... tionary.cs
Я только что скопировал Dictionary.cs в свой проект C# и скомпилировал его вместе с файлом program.cs и основным методом.
Я делаю это потому что у меня есть книга О'Рейли по программированию на C# 10, и я возюсь с примером кода класса Dictionary.
Это пример функции, которая имеет некоторые из этих ошибки:
Код: Выделить всё
public Dictionary(int capacity, IEqualityComparer? comparer)
{
if (capacity < 0)
{
ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument.capacity);
}
if (capacity > 0)
{
Initialize(capacity);
}
// For reference types, we always want to store a comparer instance, either
// the one provided, or if one wasn't provided, the default (accessing
// EqualityComparer.Default with shared generics on every dictionary
// access can add measurable overhead). For value types, if no comparer is
// provided, or if the default is provided, we'd prefer to use
// EqualityComparer.Default.Equals on every use, enabling the JIT to
// devirtualize and possibly inline the operation.
if (!typeof(TKey).IsValueType)
{
_comparer = comparer ?? EqualityComparer.Default;
// Special-case EqualityComparer.Default, StringComparer.Ordinal, and StringComparer.OrdinalIgnoreCase.
// We use a non-randomized comparer for improved perf, falling back to a randomized comparer if the
// hash buckets become unbalanced.
if (typeof(TKey) == typeof(string) &&
NonRandomizedStringEqualityComparer.GetStringComparer(_comparer!) is IEqualityComparer stringComparer)
{
_comparer = (IEqualityComparer)stringComparer;
}
}
else if (comparer is not null && // first check for null to avoid forcing default comparer instantiation unnecessarily
comparer != EqualityComparer.Default)
{
_comparer = comparer;
}
}
Я не хочу компилировать эти три класса, а затем перекомпилировать недостающие ссылки в трех классах, которые я также скомпилировал. Это потому, что мне придется рекурсивно загружать и компилировать эти исходные файлы. Я не хочу, чтобы мне пришлось загружать около 100 исходных файлов, и я хочу иметь возможность устранять эти ошибки без необходимости делать это.
Подробнее здесь: https://stackoverflow.com/questions/791 ... -namespace
Мобильная версия