字符串似乎没有 return

String doesnt seem to return

NewString 中的字符串似乎没有 return 到 UserType() 的功能。在那里声明那个变量是错误的吗?我想将 return 值设置为 UserType 以便我可以在另一个函数中使用它,例如 Vowel 函数。


using System;

namespace prob1{
    class Pogram{
        static void Main(string[] args){
            UserType();
        }

        static void Menu(){
            Console.WriteLine("\nChoice of Operation:");
            Console.WriteLine("1. Enter new/another string");
            Console.WriteLine("2.  Count vowels in string and display result");
            Console.WriteLine("3. Count consonants in string and display result");
            Console.WriteLine("4. Convert string to uppercase letters and display");
            Console.WriteLine("5. Convert string to lowercase letters and display");
            Console.WriteLine("6. Count number of words in the string");
            Console.WriteLine("7. Exit Program");
        }

        static void UserType(){
            string mainString = System.String.Empty;
            Menu();
            int menuChoice;
            menuChoice = Int32.Parse(Console.ReadLine());
            
                 switch (menuChoice)
            {
                case 1:
                    NewString(mainString);
                    
                    UserType();
                    break;
                case 2:
                    Vowel(mainString);
                    UserType();
                    break;
                default:
                    break;
            }
            
        }

        static string NewString(string mainString){
            Console.WriteLine("Enter a new string: ");
            mainString = Console.ReadLine().ToLower();
      
            return mainString;
        }

        static void Vowel(string mainString){
            int total = 0;
            var vowels = new HashSet<char> { 'a', 'e', 'i', 'o', 'u' };
            
    
            for (int finder = 0; finder < mainString.Length; finder++)
            {
                if (vowels.Contains(mainString[finder]))
                {
                total++;
                }
            }

            Console.WriteLine("total: " + total);
            
            Console.ReadKey(true);

        }
    }
}

您调用了 NewString(mainString) 方法,但没有将方法的返回值分配回 mainString。因此在 UserType 方法中,mainString 值不会根据 NewString(mainString).

的结果进行更新
case 1:
    NewString(mainString);
    Console.WriteLine("test menu string: "+ mainString);
    UserType();
    break;

您需要的是将结果 NewString(mainString) 分配回 mainString

mainString = NewString(mainString);

您需要向 UserType 添加一个默认值为 String.Empty() 或 "" 的字符串参数 -

static void UserType(string inputString = ""){...}

检查 inputString 是否为 NullOrEmpty,如果是,则显示主菜单。如果不为空,则将其传入Vowel()并将其return值保存到一个变量中以供再次使用-

var userString = Vowel(inputString);

然后在您的 switch 语句中,当值 returned 到 userString 时,您可以像这样将其传递到 UserType -

UserType(userString)