我有以下類,假設通過字符串數組來創建迭代來檢查代碼是否存在。但是,使用延遲初始化時,.value總是返回null。延遲初始化總是返回空
public class LazyInclusionList
{
private string docCopyCode;
private Lazy<LazyInclusionList> _docCopyCodeList = null;
public LazyInclusionList()
{ }
public bool GetDocCodes(string docCopyNumber)
{
docCopyCode = new string(docCopyNumber.Where(Char.IsLetter).ToArray());
_docCopyCodeList = new Lazy<LazyInclusionList>();
bool docCopyCheck = false;
int last = _docCopyCodeList.Value.GetDocCodesDB.Count();
int i = 0;
foreach (string code in _docCopyCodeList.Value.GetDocCodesDB)
{
if(docCopyCode == code)
{
docCopyCheck = true;
}
else if (docCopyCode != code && ++i == last)
{
docCopyCheck = false;
}
}
return docCopyCheck;
}
private string[] codes;
public string[] GetDocCodesDB
{
set
{
codes = value;
}
get { return codes; }
}
}
我有,我用它來檢查這個代碼下面的測試方法。
[TestMethod]
public void CheckURLList()
{
var list = new LazyInclusionList();
string[] array = new string [3] { "CB", "DB", "T" };
list.GetDocCodesDB = array;
string myTest = "CB10/00/1";
Assert.IsTrue(list.GetDocCodes(myTest));
}
這是我第一次使用這種方法,並沒有完全理解它。
我沒有看到構造函數或字段/屬性初始值設定項正在執行任何操作,那麼您如何期望執行'GetDocCodes()'方法(不是說您的測試,而是關於將使用該類型的東西)?您誤解了['Lasy <>'](https://msdn.microsoft.com/en-us/library/dd997286(v = vs.110).aspx)模式。也許如果你用文字解釋你想達到什麼目標,那麼答案會更容易。 – Sinatr
字符串數組將存儲在數據庫中,並且不想在每次需要時執行該行程(如果完全相同)(GetDocCodesDB)。我希望GetDocCodes能夠完成這項工作(返回true/false),並且使用惰性模式來管理對GetDocCodesDB的調用。我希望明確.. –