如何减少此程序中使用的C#代码量?

如何减少此程序中使用的C#代码量?,c#,C#,所以我正试图写一个简单的程序来练习,我得到了我想要的工作方式,但我仍然觉得我可以减少代码的使用量,有什么建议吗 提前谢谢 static void Main(string[] args) { string playerAnswer = Console.ReadLine(); string potReward = ""; string trueReward = calculateReward(playerAnsw

所以我正试图写一个简单的程序来练习,我得到了我想要的工作方式,但我仍然觉得我可以减少代码的使用量,有什么建议吗

提前谢谢

static void Main(string[] args)
        {
            string playerAnswer = Console.ReadLine();
            string potReward = "";
            string trueReward = calculateReward(playerAnswer, potReward);

            Console.WriteLine("Congratulations, you won {0}! ", trueReward);

        }

        private static string calculateReward(string answer, string reward)
        {
            if (answer == "1")
            {
                reward = "a cat";
            }
            else if (answer == "2")
            {
                reward = "power to rival Chuck Norris";
            }
            else if (answer == "3")
            {
                reward = "a burger";
            }
            else
            {
                reward = "nothing";
            }

            return reward;
        }

我感觉这是你的分级作业,而不仅仅是练习,无论如何这里有一些帮助

网上有很多免费的优秀教程,这里有一个例子,假设没有以前的编码或C#经验

一些起点可能是:

开关语句

多变量赋值

(一般的C型指南通常也适用,但如果不确定,请坚持使用C)

string s=“dot”,a=“net”,m=“perls”

您的所有变量是否都在实际使用/有用?

值类型变量直接包含其数据,而引用类型变量包含对其数据的引用。通过值将值类型变量传递给方法意味着将变量的副本传递给方法。方法内部对参数所做的任何更改都不会影响存储在参数变量中的原始数据。如果希望被调用的方法更改参数的值,则必须使用ref或out关键字通过引用传递参数。您还可以使用in关键字通过引用传递值参数,以避免复制,同时确保值不会更改。为简单起见,以下示例使用ref


此外,如果它是一个私有功能,请查看是否确实需要分离,尽管它可能是更大的解决方案/项目的一部分

我故意不更新你的示例代码,在给定的示例中非常简单,你自己输入的代码越多,你就越习惯这种语言


希望有帮助:)

我感觉这是你的分级作业,而不仅仅是练习,无论如何这里都有一些帮助

网上有很多免费的优秀教程,这里有一个例子,假设没有以前的编码或C#经验

一些起点可能是:

开关语句

多变量赋值

(一般的C型指南通常也适用,但如果不确定,请坚持使用C)

string s=“dot”,a=“net”,m=“perls”

您的所有变量是否都在实际使用/有用?

值类型变量直接包含其数据,而引用类型变量包含对其数据的引用。通过值将值类型变量传递给方法意味着将变量的副本传递给方法。方法内部对参数所做的任何更改都不会影响存储在参数变量中的原始数据。如果希望被调用的方法更改参数的值,则必须使用ref或out关键字通过引用传递参数。您还可以使用in关键字通过引用传递值参数,以避免复制,同时确保值不会更改。为简单起见,以下示例使用ref


此外,如果它是一个私有功能,请查看是否确实需要分离,尽管它可能是更大的解决方案/项目的一部分

我故意不更新你的示例代码,在给定的示例中非常简单,你自己输入的代码越多,你就越习惯这种语言


希望这能有所帮助:)

一个switch case语句是进行此操作的最佳方式

switch(answer) 
{
     case 1:
         reward = "A cat."; 
         break;
     case 2: 
         reward = "Power to rival Chuck Norris."; 
         break;
     case 3: 
         reward = "A burger"; 
         break;
     default: 
         reward = "Nothing"; 
         break;
}

switch case语句是执行此语句的最佳方式

switch(answer) 
{
     case 1:
         reward = "A cat."; 
         break;
     case 2: 
         reward = "Power to rival Chuck Norris."; 
         break;
     case 3: 
         reward = "A burger"; 
         break;
     default: 
         reward = "Nothing"; 
         break;
}

您还可以将三元运算符用于过滤器:

    private static string calculateReward(string answer, string reward)
    {
        reward = answer == "1" ? "a cat" : answer == "2" ? "power to rival Chuck Norris" : answer == "3" ? "a burger" : "nothing";
        return reward;
    }

您还可以将三元运算符用于过滤器:

    private static string calculateReward(string answer, string reward)
    {
        reward = answer == "1" ? "a cat" : answer == "2" ? "power to rival Chuck Norris" : answer == "3" ? "a burger" : "nothing";
        return reward;
    }

很好的答案,可能不会给那些表现出零努力并明显要求我们做作业的人提供复制/粘贴答案lol:)很好的答案,可能不会给表现出零努力并明显要求我们做作业的人提供复制/粘贴答案lol:)这有助于解决问题,谢谢。我太没经验了,以至于我的家庭作业课程都不及格。@lilac-别忘了最后一点,hint;)实际上我不确定,我在没有
奖励
字符串的情况下进行了尝试,但无法使其正常工作。@lilac-查看您的变量和参数,跟踪其生命周期,并确定需要传递什么或不需要传递什么。您的练习非常简单,所有内容都是通过value()传递的,guide假定了一些关于引用变量之类的额外知识,但关键是它们是值类型参数,而不是其他。阅读你的老师/课程给你的答案,答案就在这里,并且会帮助你以后更好地自己弄明白。非常感谢你,我在没有
奖励
参数的情况下成功地让它工作了,但是我有点困惑,我首先应该在什么时候使用params,它们应该允许您从方法体外部添加变量,对吗?我一定会尽快查看更多课程。这有助于解决问题,谢谢。我太没经验了,以至于我的家庭作业课程都不及格。@lilac-别忘了最后一点,hint;)实际上我不确定,我在没有
奖励
字符串的情况下进行了尝试,但无法使其正常工作。@lilac-查看您的变量和参数,跟踪其生命周期,并确定需要传递什么或不需要传递什么。您的练习非常简单,所有内容都是通过value()传递的,guide假定了一些关于引用变量之类的额外知识,但关键是它们是值类型参数,而不是其他。阅读你的老师/课程给你的答案,答案就在这里,这将帮助你在以后的学习中更好地理解自己。非常感谢你,我在没有奖励的情况下成功地让它工作了