2016-12-06 169 views
0

我正在設置一個類來解析從文件輸入的信息,其中一部分是決定一個人是否是高級或退伍軍人。這裏是我從文件引入的源代碼。布爾結果屬性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://stackoverflow.com/questions/3716845/casting-y-or-n-to-bool-c-sharp) – krillgar

回答

1

其他答案提供了這樣的冗餘解決方案,您不必檢查條件,然後將相同的相同比較分配給屬性。

你可以簡單:

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

這將直接比較的結果分配給布爾屬性。

+0

所以除了「y」之外的任何其他值都將表示爲false是否正確? –

+0

正確。它會檢查「Y」,其他所有內容都是錯誤的。 – Peroxy

-1

就在那裏第一次增加一個檢查:

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

謝謝你,我真的結束了做這個權利後,我問這個問題大聲笑 –

0

轉換爲布爾值。

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

+0

謝謝。一個問題..我假設與'? true:false;'部分,值是引用是什麼代表真實和任何其他值是錯誤的?只是猜測,我不確定是什麼?手段。 –

+0

這是條件運算符表達式。 (條件)? [true path]:[false path]; – Peroxy