布尔结果属性c#

问题描述:

我正在设置一个类来解析从文件输入的信息,其中一部分是决定一个人是否是高级或退伍军人。这里是我从文件引入的源代码。布尔结果属性c#

public static SalesInfo Parse(string stringValue) 
{ 
    string[] words; 
    SalesInfo person = new SalesInfo(); 

    words = ParseCsvString(stringValue.Trim()); 
    person.ID = Int32.Parse(words[0]); 
    person.Name = words[1]; 
    person.City = words[2]; 
    person.Senior = words[3]; //this has red underline can't convert string to bool 
    person.Veteran = words[4]; //this has red underline can't convert string to bool 
    person.PurDate = Date.Parse(words[5]); 
    person.ItemPrice = double.Parse(words[6]); 
    person.Quantity = int.Parse(words[7]); 

    return person; 
} 

这里是以文件中的一行为例。

2546,"Garfield, Janice",Neosho,Y,N,11/23/2016,289.68,4

目前我的高级和资深的财产都是空如下

public bool Veteran 
{ 
    get 
    { 
    return this.veteran; 
    } 
    set 
    { 

    } 
} 

public bool Senior 
{ 
    get { return this.senior; } 
    set { } 
} 

我知道我需要发送“Y”或“N”的值由布尔特性进行检查高级和退伍军人,但我努力弄清楚,如果可能将字符转换为布尔值,并返回true或false从文件中获取正确的输入。

+0

可能的重复[铸造Y或N来布尔C#](http://*.com/questions/3716845/casting-y-or-n-to-bool-c-sharp) – krillgar

其他答案提供了这样的冗余解决方案,您不必检查条件,然后将相同的相同比较分配给属性。

你可以简单:

person.Senior = words[3] == "Y"; 
person.Veteran = words[4] == "Y"; 

这将直接比较的结果分配给布尔属性。

+0

所以除了“y”之外的任何其他值都将表示为false是否正确? –

+0

正确。它会检查“Y”,其他所有内容都是错误的。 – Peroxy

就在那里第一次增加一个检查:

SalesInfo person = new SalesInfo(); 

    words = ParseCsvString(stringValue.Trim()); 
    person.ID = Int32.Parse(words[0]); 
    person.Name = words[1]; 
    person.City = words[2]; 
    string senior = words[3]; 
    if (senior == "Y"){ person.Senior = true; } 
    else { person.Senior = false; } 

然后做同样的退伍军人。

+0

谢谢你,我真的结束了做这个权利后,我问这个问题大声笑 –

转换为布尔值。

person.Senior = words [3] .ToLower()==“y”?真假;

+0

谢谢。一个问题..我假设与'? true:false;'部分,值是引用是什么代表真实和任何其他值是错误的?只是猜测,我不确定是什么?手段。 –

+0

这是条件运算符表达式。 (条件)? [true path]:[false path]; – Peroxy