【问题标题】:Can a parameter with the same name as class field cause issues? C#与类字段同名的参数会导致问题吗? C#
【发布时间】:2017-06-14 11:51:43
【问题描述】:

我有一个类,其中包含一个参数名称与字段名称匹配的方法。

class Test 
{
    private int num;

    public void Setup(int num)
    {
        if (num == 10)
        {
            ...
        }
    }
}

在任何情况下,Setup 方法中的求值可以代替参数使用字段来代替吗?

【问题讨论】:

  • 是的,将其称为this.num 而不仅仅是num

标签: c# class parameters


【解决方案1】:

不,评估不可能使用字段而不是参数。范围内的变量总是会影响外部范围的变量。

因此,如果您的方法具有num 参数,则如果不使用this 对其进行限定,则无法从该方法中访问实例成员num

但如果可以的话,最好尽量避免这些情况。

【讨论】:

    【解决方案2】:

    是的,将其称为this.num 而不仅仅是num

    class Test 
    {
        private int num;
    
        public void Setup(int num)
        {
            if (num == 10) //parameter
            {
                this.num = 42; //field
            }
        }
    }
    

    【讨论】:

    • 您的答案假设当还有一个同名参数时,OP 正在询问如何访问字段,但这不是 OP 所要求的。 OP正在询问是否同时拥有它们可能会导致问题。 (所以,看看你的答案和我的答案之间的区别。)
    • @MikeNakis - 我以相反的方式阅读了他想知道如何访问该字段的问题。你建议的方式对我来说没有意义,因为 OP 会这样问。
    • 是的,我知道,您对问题的解读并非没有道理,但我认为“可以 [...] 引起问题吗?”标题中的一部分给出了它。所以,对我来说,对你投反对票是给我一个机会的一种方式,(因为你的答案已经被投了赞成票,但我认为它不符合标准,)显然还有一个人同意我的观点。
    • @MikeNakis - 很公平。我想 OP 会让我们知道的。
    • 看来已经解决了。 C-:=
    猜你喜欢
    • 2019-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-01
    • 1970-01-01
    • 2011-01-24
    • 2020-03-22
    • 2015-04-12
    相关资源
    最近更新 更多