Я собрал это, чтобы проанализировать строку, а затем вернуть 3 значения в хранимой процедуре SQL (у меня есть другой метод C#, который форматирует 3 значения на основе выбранного формата вывода, но с этим кодом нет проблем, поэтому я не публиковал его). Когда мой босс увидел мой код, он это сказал:метод нестатического класса - C#
«Как у вас есть метод нестатического класса фабричного Вам нужно создать объект для разбора строки для создания объекта для использования
?Зачем переместить синтаксический анализ в класс вместо того, чтобы оставить его там, где он был , и просто передать новый класс для хранения данных? "
Я сделал новый класс, но могу легко переместить его в другой. Проблема в том, что Я не знаю, что он подразумевает по нестационарному методу фабрики, а также я не знаю, как назначить значение, фракцию и направление, не создавая новый экземпляр TwpRng, как я сделал: TwpRng result = new TwpRng();
Это моя первая трещина в C# BTW.
public class TwpRng
{
public string Value;
public string Fraction;
public string Direction;
public TwpRng GetValues(string input)
{
TwpRng result = new TwpRng();
result.Value = "";
result.Fraction = "";
result.Direction = "";
Regex pattern_1 = new Regex(@"(?i)^\s*(?<val>\d{1,3})(?<frac>[AU])(?<dir>[NEWS])\s*$"); // Example: 0255N
Match match_1 = pattern_1.Match(input);
Regex pattern_2 = new Regex(@"(?i)^\s*(?<val>\d{1,3})(?<dir>[NEWS])\s*$"); // Example: 25N
Match match_2 = pattern_1.Match(input);
Regex pattern_3 = new Regex(@"(?i)^\s*(?<val>\d{1,3})(?<frac>[AU])\s*$"); // Example: 25A
Match match_3 = pattern_1.Match(input);
if (match_1.Success)
{
result.Value = match_1.Groups["val"].Value;
result.Fraction = match_1.Groups["frac"].Value;
result.Direction = match_1.Groups["dir"].Value.ToUpper();
}
else if (match_2.Success)
{
result.Value = match_2.Groups["val"].Value;
result.Direction = match_2.Groups["dir"].Value.ToUpper();
}
else if (match_3.Success)
{
result.Value = match_3.Groups["val"].Value;
result.Fraction = match_1.Groups["frac"].Value;
}
else
{
result = null;
}
return result;
}
}
Спасибо, я попробую это. Это имело для меня общий смысл, я просто не понимал, как реализовать это на практике с точки зрения синтаксиса. – chriscmu
Это совершенно справедливо для обозначения члена * нестатического * класса * static *. Вы вызываете этих членов так же, как вы их вызываете, на * статический класс. Вероятно, это вас смутило. –