#c# #string #console-application #void
#c# #строка #консольное приложение #void
Вопрос:
Здравствуйте, у меня есть консольное приложение, которое успешно выполняет ввод через массив, содержащий плохие слова, и если есть плохое слово, оно выводит некоторый текст, а затем завершает работу приложения. Теперь я хочу посмотреть, что я могу сделать с DetectBW(), включая присвоение его строке, хотя DetectBW() является типом void и ничего не возвращает, поэтому присвоение его строке невозможно, если оно написано так
НАПРИМЕР. string Name = DetectBW();
Вот мой код для дальнейшего объяснения
namespace CleanApp
{
class Application
{
Эта область содержит плохие слова. Я написал это в противном случае, в нем указан целый список плохих слов, которые не были бы хорошими по очевидной причине.
//profanityArray()
Эта область содержит числа 0-318, включая 318
//ProNumArray()
Это основной метод
#region//Main() Put everything thats finished in here to output it to Console Apllication.
static void Main(string[] args)
{
string[] Sarray = profanityArray();
int[] Iarray = ProNum();
// infinite loop that writes "Ask A question." then accepts a line of text from user (DetectBW())
while (true)
{
Console.WriteLine("Ask A question.");
DetectBW();
}
}
#endregion
Это метод DetectBW(), он принимает строковый метод PlayerInput() (консоль.Readline) и запускает его через profanityArray и обнаруживает, содержит ли PlayerInput() какие-либо плохие слова в profanityArray.
#region // DetectBW()
static void DetectBW()
{
string PI = PlayerInput();
string[] PIA = profanityArray();
foreach(int i in ProNum())
{
if(PI.ToLower().Contains(PIA[i]))
{
if (PI.ToLower().Contains(" " PIA[i] " "))
{
Console.WriteLine(PI " contains a bad word(s)!");
Console.WriteLine("If you can't be polite then get off!!");
Environment.Exit(0);
break;
}
if (PI.ToLower().Contains(PIA[i] " ")|| PI.ToLower().Contains(" " PIA[i]))
{
Console.WriteLine(PI " contains a bad word(s)!");
Console.WriteLine("If you can't be polite then get off!!");
Environment.Exit(0);
break;
}
}
}
}
#endregion
Эта область — PlayerInput() это строковый метод, о котором я говорил.
#region// PlayerInput()
static string PlayerInput()
{
string S = Console.ReadLine();
return S;
}
#endregion
Именно здесь я планирую использовать DetectBW(), запустить его и использовать тот же playerInput(), который используется в DetectBW(), и назначить его строковой переменной для последующего использования.
static void App()
{
Console.WriteLine("What is you name?");
// This is where i need Help!!
}
}
}
Итак, это мой вопрос:
1.
Я знаю, что я не могу присвоить void строковой переменной, но есть ли способ использовать тот же playerInput(), который используется в DetectBW() , поэтому я знаю, что в нем нет плохих слов, и присвоить его строковой переменной name .
Комментарии:
1. Хм .. измените метод, чтобы возвращать список или массив? Я не понимаю, что вы хотите сделать
2. Зачем вы это делаете,
void
если вам нужно что-то вернуть?3. Возьмите ввод проигрывателя за пределами
DetectBW
и передайте его вместо этого — тогда вы можете использовать его вне метода:var input = // getplayerinput; DetectBW(input); DoOtherThingsWithInput(input);
4. Если предполагается возвращать некоторые типы, подпись должна быть изменена на эту (удалить
void
). Если вы хотите задать значения вApp
методе, его можно присвоитьstatic
типу и использовать вstatic
методах.5. Вы также можете использовать выходные параметры , но я не понимаю, в чем смысл