Код: Выделить всё
Severity Code Description Project File Line Suppression State
Error (active) CS0234 The type or namespace name 'IDictionaryDebugView' does not exist in the namespace 'System.Diagnostics' (are you missing an assembly reference?) DictionaryTest1 C:\Users\Erik\source\repos\DictionaryTest1\DictionaryTest1\Dictionary.cs 15
Error (active) CS0103 The name 'ThrowHelper' does not exist in the current context DictionaryTest1 C:\Users\Erik\source\repos\DictionaryTest1\DictionaryTest1\Dictionary.cs 51
Error (active) CS0103 The name 'ExceptionArgument' does not exist in the current context DictionaryTest1 C:\Users\Erik\source\repos\DictionaryTest1\DictionaryTest1\Dictionary.cs 51
Error (active) CS0103 The name 'NonRandomizedStringEqualityComparer' does not exist in the current context DictionaryTest1 C:\Users\Erik\source\repos\DictionaryTest1\DictionaryTest1\Dictionary.cs 74
Могу ли я вместо этого просто включить пространство имен или файлы DLL?
Я получил Dictionary.cs из: https://github.com/microsoft/references ... lib/system /collections/generic/dictionary.cs
Я только что скопировал Dictionary.cs в свой проект C# и скомпилировал его вместе с файлом program.cs и основным методом...Я делаю это, потому что у меня есть книга Orielly «Программирование на 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 ... d-namspace
Мобильная версия