65.9K
CodeProject 正在变化。 阅读更多。
Home

命名参数简介 - C#4.0

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.72/5 (15投票s)

2010年10月25日

CPOL

1分钟阅读

viewsIcon

30968

downloadIcon

79

本文将介绍使用命名参数的优势

引言

C#4.0 引入了命名参数,为开发者提供了更大的灵活性,可以自行决定参数的传递方式。

背景

考虑以下示例,该示例是在较低版本的 .Net 中完成的。

class Program
    {
        static void Main(string[] args)
        {
            WithoutNamedParameter(10, "SomeName");
            WithoutNamedParameter("SomeName",10);
            Console.ReadKey(true);
        }

        private static void WithoutNamedParameter(string name, int age)
        {
            Console.WriteLine(string.Format("{0},your age is {1}", name, age));
        }

        private static void WithoutNamedParameter(int age, string name)
        {
            Console.WriteLine(string.Format("{0},your age is {1}",name,age));
        }
    }

如您所见,`WithoutNamedParameter` 函数是一个简单的重载方法,它仅接受 2 个参数,且参数类型相同(int 和 string),唯一的区别是参数顺序不同。虽然两种情况下的输出结果相同。

这在实际场景中发生,开发者别无选择,只能创建重载方法。

C#4.0 通过引入命名参数解决了这个问题,开发者可以灵活地使用参数。

使用命名参数解决重载问题

现在让我们看看 C#4.0 如何克服这种情况。考虑以下程序

class Program
    {
        static void Main(string[] args)
        {
            #region Named Parameter Example
            WithNamedParameter(Age: 10, Name: "SomeName");
            WithNamedParameter(Name: "SomeName", Age: 10);
            Console.ReadKey(true);
            #endregion
        }

        private static void WithNamedParameter(string Name, int Age)
        {
            Console.WriteLine(string.Format("{0}, your age is {1}", Name, Age));
        }
    }

如您所见,在 `WithNamedParameter` 中,我们只需在方法调用中指定参数名称,后跟一个**冒号 (:)**,然后是参数值,而编译器会完成其余的工作。这不是很方便吗?

输出如预期:

3.jpg

结论

在本文中,我们简要了解了命名参数如何帮助开发者避免编写重载方法,并提高代码的可重用性。

非常感谢您对该主题的评论,以便改进该主题。

感谢阅读本文。

© . All rights reserved.