Член 'object.Equals (object, object)' недоступен со ссылкой на экземпляр - PullRequest
0 голосов
/ 07 октября 2019

Во-первых, я знаю этот вопрос с таким же именем . На самом деле я пишу этот Вопрос, потому что он не решил мою проблему, и я хочу добавить еще один Ответ, но он не относится к этому Вопросу.

Проблема:

Iесть некоторый код, который выдает ошибку «Элемент« object.Equals (object, object) »не может быть доступен с помощью ссылки на экземпляр; вместо этого укажите имя типа» .

Какой-то код мне нужно запускать, только если утилита запускается локально, а не удаленно. StatsServer строка из таблицы в центральной базе данных.

string localComputerName = Environment.MachineName;
foreach (StatsServer server in servers)
{
    if (localComputerName.Equals(server, StringComparison.OrdinalIgnoreCase))
    ....
    }
}

Вопрос:

Visual Studio подчеркивает localComputerName.Equals, и я не могу понять, почему. Что здесь происходит и как я могу это исправить?

1 Ответ

0 голосов
/ 07 октября 2019

Происходит следующее: string - это object, но это не тот же тип object, что и StatsServer, поэтому Visual Studio запутывается и думает, что переменная localComputerName является проблемой, а не server.

Исходя из того, что я могу определить, он решает это по параметрам метода Equals, а не по типу данных из переменной, к которой применяется Equals. (IMO, это задом наперед, но, очевидно, у Microsoft есть свои причины, и, вероятно, что-то связано с тем, как Equals перегружается / распространяется на все object с или что-то в этом роде.)

В этом случае,ошибка - красная сельдьЧто должно произойти, так это то, что я должен получить доступ к свойству / столбцу ServerName server, так как это string и содержит данные, которые я действительно хочу для сравнения:

if (localComputerName.Equals(server.ServerName, StringComparison.OrdinalIgnoreCase))

Моральистория заключается в том, чтобы убедиться, что ваши object имеют один и тот же тип данных, и просмотреть всю строку кода, прежде чем предположить, что JIT-компилятор на 100% точен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...