为方法使用命名的可选参数
Used Named Optional Parameters for Method
我有一个方法,其中我有几个可选的布尔参数,一个对象的不同属性将根据哪些参数为真来赋予一个值。
上下文的方法如下:
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;
}
但是,有时我希望第二个或第三个布尔参数为 true,但我无法将其指定为我要切换的参数,而无需为前面的参数明确声明 true 或 false。
如果我想初始化一个 AutoPatientLookup
具有性别值 属性 的对象,我将不得不这样调用它:
InitializeTestPatientInfo(false,false,true);
我尝试了一些类似
的方法
InitializeTestPatientInfo(Gender = true);
和
InitializeTestPatientInfo(bool Gender = true);
但似乎没有任何效果。是否有正确的语法来完成我正在尝试的事情?尽管当只有三个布尔参数时初始化语法不是很不方便,但如果有几十个,这可能更适用。
尝试
InitializeTestPatientInfo(Gender: true);
您可以命名要分配的参数:
改为这样做
InitializeTestPatientInfo(Gender: true);
您要使用的语法是:
InitializeTestPatientInfo(Gender: true);
我有一个方法,其中我有几个可选的布尔参数,一个对象的不同属性将根据哪些参数为真来赋予一个值。
上下文的方法如下:
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;
}
但是,有时我希望第二个或第三个布尔参数为 true,但我无法将其指定为我要切换的参数,而无需为前面的参数明确声明 true 或 false。
如果我想初始化一个 AutoPatientLookup
具有性别值 属性 的对象,我将不得不这样调用它:
InitializeTestPatientInfo(false,false,true);
我尝试了一些类似
的方法InitializeTestPatientInfo(Gender = true);
和
InitializeTestPatientInfo(bool Gender = true);
但似乎没有任何效果。是否有正确的语法来完成我正在尝试的事情?尽管当只有三个布尔参数时初始化语法不是很不方便,但如果有几十个,这可能更适用。
尝试
InitializeTestPatientInfo(Gender: true);
您可以命名要分配的参数:
改为这样做
InitializeTestPatientInfo(Gender: true);
您要使用的语法是:
InitializeTestPatientInfo(Gender: true);