簡體   English   中英

轉換並檢查struct IList是否包含可為null的int。 C#

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM