Разница между 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 должны быть функционально идентичными