Я хочу сделать этот код C# на F#
string[] a = new string[5];
string b = string.Empty;
a[0] = "Line 1";
a[2] = "Line 2";
foreach (string c in a)
{
b = c + Environment.NewLine;
}
Да ладно, почему это не проголосовали?
+1: Нет причин, по которым законный вопрос должен был быть отклонен.
Согласовано. Хотя я подозреваю, что Уилл Дин прав и в исходном вопросе есть опечатка. Это может быть причиной голосов против.
За него дважды проголосовали против, так что это не только Уилл (если он вообще проголосовал против). И опечатка вряд ли станет причиной для голосования "против".
Извините, я не имел в виду, что Уилл проголосовал против или что опечатки были оправданием для голосов против.
@Sunny: не требуется инициализировать все элементы перед их использованием, и исключение NullReferenceException не возникает при объединении нулевых строк вместе.


Намного лучше использовать встроенный метод String.Join, чем использовать собственную функцию на основе повторяющегося объединения строк. Вот код на F#:
open System
let a = [| "Line 1"; null; "Line 2"; null; null;|]
let b = String.Join(Environment.NewLine, a)
Оператор '^' объединяет две строки. Кроме того, "+" перегружен, поэтому он может работать со строками. Но использование StringBuilder или Join - лучшая стратегия для этого.
Вы можете использовать функцию F# concat из модуля System, например:
let a = [| "Line 1"; null; "Line 2"; null; null;|]
let b = String.concat System.Environment.NewLine a
(вам не следует импортировать пространство имен System, чтобы избежать конфликта имен между String module F# и String class .NET)
Вы уверены, что хотите сделать это, а не b + = c + E.nl?