我有一个方法,我有几个可选的布尔参数,对象的不同属性将根据哪些参数为真给出一个值。
以下是上下文的方法:
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);
但似乎没有任何效果。是否有正确的语法来完成我正在尝试的内容?即使在只有三个布尔参数进行初始化语法不是很麻烦,如果有几十个,这可能是更适用。
答案 0 :(得分:8)
您要使用的语法是:
InitializeTestPatientInfo(Gender: true);
答案 1 :(得分:7)
尝试
List<MyClass> uberList = new LinkedList<>();
Map<String, List<MyOtherClass>> map = new HashMap();
//Populate map
map.entrySet().stream().filter(s -> s.getValue().size() > 0 && s.getValue().values().size() > 0).forEach(
y -> {
// Do stuff
if(noError) {
uberList.add(MyClass3);
}
}
}
//Do stuff on uberList
答案 2 :(得分:6)
您可以为要分配的参数命名:
改为
InitializeTestPatientInfo(Gender: true);