为什么方法中没有不必要的“ref”警告?

时间:2016-03-09 05:07:57

标签: c#

如果你有这样的代码:

    class Program
    {
        static void Main(string[] args)
        {
            Test test = new Test();
            test.PropOne = 123;
            test.PropTwo = "testing";

            ModifyTestClassWithRef(ref test);
        }

        public static void ModifyTestClassWithRef(ref Test test)
        {
            test.PropOne++;
            test.PropTwo += "_abc";
        }
    }

    public class Test
    {
        public int PropOne { get; set; }
        public string PropTwo { get; set; }
    }

为什么编译器没有提供关于“ref”没有必要的警告,因为在这种特殊情况下没有必要?

1 个答案:

答案 0 :(得分:0)

对于您提出的问题,不应该警告。许多开发人员都很难理解并清除所有警告。有些团队甚至将警告提升为错误。如果一个接口或抽象基类"要求"一个方法有一个ref参数,并且实现不需要设置ref,然后实现者会得到警告,并且必须通过排除显式地修饰该方法。我确定在很多商店都不会令人满意。

另一方面,out参数明确保证实现者设置参数 - 你甚至可以在不设置的情况下进行编译。如果这是你想要的行为,那么out参数就是你的朋友。