Я создаю .NET Standard F # библиотеку с F # 4.3.4 (я также тестировал с 4.5) со следующим кодом:
namespace ClassLibrary2
module Say =
let a = "国".Length.ToString()
let b = sprintf "%A" ("国".ToCharArray() |> Array.map int)
let c = "国"
При ссылке на эту библиотеку из другого проекта (ядро .net или.net framework):
Console.WriteLine(Say.a); // F# .net standard
Console.WriteLine(Say.b);
Console.WriteLine(Say.c == "国");
Я получаю следующий вывод:
2
[|65533; 65533|]
False
Эквивалентная библиотека C # .NET Standard:
using System;
using System.Linq;
namespace ClassLibrary1
{
public static class Class1
{
public static string a = "国".Length.ToString();
public static string b = String.Join(", ", "国".ToCharArray().Select(i => ((int)i).ToString()));
public static string c = "国";
}
}
дает ожидаемый результат:
1
22269
True
Вот репозиторий, показывающий проблему: https://github.com/liboz/Kanji-Bug.
Вероятно, это будет ошибкой, но мне было интересно, что будет разумным решением этой проблемы?В частности, я хочу иметь возможность проверять равенство строк с чем-то вроде Say.c = "国"
, где я могу использовать неанглийские символы при использовании библиотеки .NET Standard.