C# 用户输入验证

C# User Input Validation

提问人:askldq 提问时间:2/9/2023 最后编辑:askldq 更新时间:2/9/2023 访问量:142

问:

如何使用我的接口验证方法中的用户输入,其中存储了所有允许的输入? 如果我这样做,那么我会得到System.NullReferenceException:

public interface INumbUnit
    {
        public string UnitName { get; set; }


    }

public void ValidateNumb()
        {
            INumbUnit? x = null;

            while (string.IsNullOrEmpty(UserSourceUnit))
            {
                Console.WriteLine("[ERROR] Input can't be empty! Please try again.");
                ChooseUnits();
            }

            while(UserSourceUnit != x.UnitName) //0Reference
            {
                Console.WriteLine("[ERROR] No such unit for selection! Please try again.");
            }

        }

UserSourceUnit 只是一个 Console.ReadLine

UnitNames 存储在 extern 类中,但仍有对它们的引用,所以我认为这不是问题所在

C# 接口 NullReferenceException 对象引用

评论

0赞 Klaus Gütter 2/9/2023
这回答了你的问题吗?什么是 NullReferenceException,如何修复它?

答:

1赞 Thomas Koelle 2/9/2023 #1

我怀疑你是编程新手,所以你必须想象 INumbUnit 和 UnitName 都可以为 null。

因此,要么要检查 INumbUnit beeing null,要么要确保它永远不会为 null。

你需要明白这条线

INumbUnit? x = null;

很可能需要用真实对象替换,比如

INumbUnit? x = new NumbUnit();

然后你再上一堂课

public class NumbUnit:INumbUnit