Разница между C # и VB.Net сравнением строк

Я на самом деле пытаюсь ответитьэтот вопрос но так как это очень сложно и вряд ли быстро получит хороший ответ, я собираюсь попытаться разработать реализацию самостоятельно. Кажется, что основная проблема заключается в том, что пример C #, которому я следовал, не переводит непосредственно в VB.

При проверке сравнения строкBinaryExpression в лямбде VB сообщаетExpression.Method.DeclaringType бытьMicrosoft.VisualBasic.CompilerServices.Operators с именем методаCompareString, Это явно специфично для VB.

Выражение просто сравниваетx.Content_Type <> "" и вызов ToString возвращает{(CompareString(x.Content_Type, "", False) != 0)} - что кажется довольно логичным (CompareStringдокументы здесь).

Может кто-нибудь объяснить мне, как (или даже лучше, почему) VB и C # по-разному обрабатывают сравнения строк.

Я думаю, что если я смогу получить ответ на этот вопрос, я смогу найти решение для другой проблемы.

Edit: Чтобы уточнить, я реализую собственный поставщик LINQ, который изучает следующееWhere вызов:

Query.Where(function(x) x.Content_Type <> "")

или эквивалент C # ...

query.Where(x=>x.Content_Type!="");

Насколько мне известно, эти 2 должны быть функционально идентичными

Ответы на вопрос(2)

Ваш ответ на вопрос