Вы можете сделать это с помощью такой рефлексии:
var myEmployees = new Employees();
var properties = myEmployees.GetType().GetProperties();
foreach (var field in properties)
{
field.SetValue(myEmployees, "NewValue");
}
// Print all field's values
foreach (var item in properties)
{
Console.WriteLine(item.GetValue(myEmployees));
}
В противном случае вы можете использовать список или словарь или создать новую структуру, которая сделает вас более гибкой и позволит вам контролировать больше свойств поле:
struct FieldProperties
{
public string Name { get; set; }
public string Value { get; set; }
public string Type { get; set; }
...
}
List<FieldProperties> lst = new List<FieldProperties>();
Я бы использовал вариацию вашего метода:
string longString =
"Lorem ipsum dolor sit amet, consectetur adipisicing " +
"elit, sed do eiusmod tempor incididunt ut labore et dolore magna " +
"aliqua. Ut enim ad minim veniam.";
Здесь я начинаю строку в строке после знака равенства, чтобы все они выстроились в линию, и я также убеждаюсь, что пространство происходит в конец линии (опять же для целей выравнивания).
После ответа Tj Kellie
в C # 6.0 вы можете легко иметь одну команду для выполнения конкатенации и встраивания различной информации через интерполяцию строк, а также не иметь строк новой строки, несмотря на определение строки на нескольких строках.
Сложный пример, включающий все это, может выглядеть следующим образом:
public int? BestTime { get; set; }
public int? WorstTime { get; set; }
public int? AvgTime { get; set; }
public int TimeoutReachedCount { get; set; }
public int AllRunCount { get; set; }
public string Str => $@"
Ran {AllRunCount} times;
Reached timeout {TimeoutReachedCount} times;
Best time = {(BestTime.HasValue ? BestTime.ToString() : "N/A")};
Worst time = {(WorstTime.HasValue ? WorstTime.ToString() : "N/A")};
Average time = {(AvgTime.HasValue ? AvgTime.ToString() :"N/A")};"
.Replace(Environment.NewLine, "");
Конечно, необходимо добавить дополнительную осторожность, чтобы добавить пробелы в конце строк, чтобы избежать слияния слов ,
Вы можете использовать несколько констант, а затем объединить их в одну большую строку:
const string part1 = "part 1";
const string part2 = "part 2";
const string part3 = "part 3";
string bigString = part1 + part2 + part3;
Компилятор будет «сворачивать» эти константы в одну большую строку в любом случае, поэтому вообще нет времени на выполнение этот метод по сравнению с исходным образцом кода.
Для этого подхода есть ряд преимуществ:
Если вы столкнулись с вопросом о том, как выполнять многострочные строки, возможно, вам лучше использовать файл ресурсов.
Для SQL-запросов или других длинных строк, которые имеют свой собственный синтаксис, я иногда делаю что-то вроде этого:
private const string QUERY = @"
SELECT *
FROM Table1 AS T1
INNER JOIN Table2 AS T2 ON T1.ID = T2.T1ID
WHERE T1.VALUE = @P1
GROUP BY T2.OTHERVALUE
";
Это оставляет форматирование строки неповрежденной.
Ваша первоначальная идея, вероятно, самый простой способ иметь встроенную литеральную строку в вашем коде. Компилятор C # объединяет литералы, объединенные с +
, поэтому он по существу эквивалентен одной очень длинной строке.
Другим вариантом, конечно же, является экстернализация строки в конфигурации файл или файл настроек. Это позволит сделать его более легко читаемым и легче изменить или локализовать. Я лично избегаю размещать длинные строки текста непосредственно в коде приложения, если они не очень статичны и не нуждаются в локализации - текст сообщения о внутреннем исключении и т. Д.
Если вы хотите, чтобы код был минимальным, и вы можете легко его прочитать, я все равно поеду с строкой @ literal. Плюс его быстрее, если вы источник длинный и ...
string verbatimLit = @"
__ __
/ `-' \
/_| N |_\ Sometimes
| I | format in code
| N | matters
|_____|
";
Затем удалите строки новой строки из строки в 1 строке,
verbatimLit.Replace(Environment.NewLine, " ");
contents<newline>here
вместо contents here
станет contentshere
. (Или можно было бы добавить каждую строку после первого пробела.)
– DavidRR
23 January 2014 в 17:56