[英]Convert and check if struct IList contains nullable int. c#
我有一個名為CheckedNumber
的結構。 此類型用於屬性中:
`public IList<CheckedNumber> CheckedNumbers { get { return this._checkedNumbers; } }`
...保留數字列表。
我還有另一個財產:
`public int? TheNumber { get { return this._theNumber; } }`
...並要檢查其值是否在CheckedNumbers
列表中。
這個:
if (this.CheckedNumbers.Contains(this.TheNumber)) { //... }
給出錯誤:
Argument 1: cannot convert from 'int?' to 'ProjectName.Models.CheckedNumber'
如何轉換int? 我的結構類型?
好了,現在的問題是稍微清晰的-但根本上,你問的名單是否CheckedNumber
值包含一個特定的int?
值。 作為一個int?
,這沒有任何意義int?
不是 CheckedNumber
就像問List<Fruit>
是否包含汽車。
如果part或您的CheckedNumber
結構是int?
, 你可能想要:
if (CheckedNumbers.Any(x => x.SomeProperty == TheNumber))
或者,您可能想要:
if (CheckedNumbers.Contains(new CheckedNumber(TheNumber)))
否則,您將不得不進一步闡明問題。
讓CheckedNumber
實現IEquatable<CheckedNumber>
。 然后,列表的Contains
方法可以使用此方法查找列表項。
public struct CheckedNumber : IEquatable<CheckedNumber>
{
public CheckedNumber(int? number)
{
_value = number;
}
private int? _value;
public int? Value { get { return _value; } }
public bool Equals(CheckedNumber other)
{
return _value == other._value;
}
}
現在您可以通過轉換int?
來進行檢查了int?
到一個CheckedNumber
if (this.CheckedNumbers.Contains(new CheckedNumber(this.TheNumber))) {
//...
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.