【问题标题】:Boolean result property c#布尔结果属性 c#
【发布时间】:2016-12-06 18:45:34
【问题描述】:

我正在设置一个类来解析从文件输入的信息,其中一部分是决定一个人是高级还是退伍军人。这是我从文件中引入时的源代码。

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' 的值以由高级和退伍军人的布尔属性检查,但我正在努力找出如果可能的话将 char 转换为布尔值并返回true 或 false 以从文件中获取正确的输入。

【问题讨论】:

标签: c# boolean


【解决方案1】:

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

你可以简单地:

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

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

【讨论】:

  • 所以除了“y”之外的任何其他值都将被表示为假正确?
  • 正确。它会检查“Y”,其他的都是假的。
【解决方案2】:

转换为布尔值。

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

【讨论】:

  • 谢谢。一个问题..我假设? true : false; 部分的值是引号代表真,其他任何值都是假的?只是猜测,我不确定是什么?意思是。
  • 这是条件运算符表达式。 (健康)状况) ? [真路径] : [假路径];
【解决方案3】:

只需先在那里添加一个检查:

  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; }

然后对老兵做同样的事情。

【讨论】:

  • 谢谢你,在我问了这个问题之后,我实际上就这样做了,哈哈
猜你喜欢
  • 2011-12-26
  • 1970-01-01
  • 2015-06-17
  • 1970-01-01
  • 1970-01-01
  • 2010-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多