首页 > 解决方案 > 用于方法的命名可选参数

问题描述

我有一个方法,其中有几个可选的布尔参数,对象的不同属性将根据哪些参数为真而被赋予一个值。

这是上下文的方法:

public static AutoPatientLookup InitializeTestPatientInfo(bool SSN = false, bool PatientNumber = false, bool Gender = false)
{
    AutoPatientLookup TestAPIParameters = new AutoPatientLookup();
    TestAPIParameters.FirstName = "First";
    TestAPIParameters.LastName = "Last";
    TestAPIParameters.DOB = "4/9/1953";
    TestAPIParameters.PracticeID = 11071;

    if (SSN)
    {
        TestAPIParameters.SSN = 000010281;
    }
    if (PatientNumber)
    {
        TestAPIParameters.PatientNumber = 458;
    }
    if (Gender)
    {
        TestAPIParameters.Gender = "F";
    }

    return TestAPIParameters;
}

但是,有时我希望第二个或第三个布尔参数为真,但我无法将其指定为我想要切换的参数,而无需明确说明前面参数的真或假。

如果我想初始化一个AutoPatientLookup具有性别属性值的对象,我必须这样调用它:

InitializeTestPatientInfo(false,false,true);

我尝试了一些类似的东西

InitializeTestPatientInfo(Gender = true);

InitializeTestPatientInfo(bool Gender = true);

但似乎没有任何效果。是否有正确的语法来完成我正在尝试的事情?尽管当只有三个布尔参数时初始化语法不是很不方便,但如果有几十个,这可能更适用。

标签: c#optional-parametersnamed-parameters

解决方案


您要使用的语法是:

InitializeTestPatientInfo(Gender: true);

推荐阅读