我有一個List<bool>和一個List<string>
方法都是查List的最后一個元素是不是和當前傳入的value相等,如果不等,就把Value add到list后面
同時,先判斷list是否為空,如果是空,就直接添加。
但是string可能會是"",所以更不知道怎么寫
想用T來寫,但是卡住了。
求寫法
uj5u.com熱心網友回復:
問題沒有描述清楚。。看不懂uj5u.com熱心網友回復:
private void UpdateHistoryALL<T>(T Value,List<T>HistoryList,List<DateTime> TimeList){
int Count = HistoryList.Count;
if(typeof(T)==typeof(bool))
{
if(Count==0)
{
HistoryList.Add(Value);
TimeList.Add(DateTime.Now);
}
else
{
}
}
}
寫到這步就寫不下去了 if (Value!=HistoryList[Count-1]) 這個就報錯了,怎么寫比較好
將value和list的最后一個值來比較
uj5u.com熱心網友回復:
運算子“!=”無法應用于“T”和“T”型別的運算元uj5u.com熱心網友回復:
HistoryLis.Last() != Valueuj5u.com熱心網友回復:
public void UpdateHistoryALL<T>(List<T> list, T value)
{
if (list.Count == 0)
{
list.Add(value);
}
else
{
list.Clear();
}
}
private void Test()
{
List<bool> boolList = new List<bool>();
UpdateHistoryALL<bool>(boolList, true);
List<DateTime> times = new List<DateTime>();
UpdateHistoryALL<DateTime>(times, DateTime.Now);
List<string> texts = new List<string>();
UpdateHistoryALL<string>(Text, "文本");
}
uj5u.com熱心網友回復:
public void UpdateHistoryALL<T>(List<T> list, T value)
{
if (list.Count == 0 || !list.Last<T>().Equals(value))
{
list.Add(value);
}
else
{
}
}
private void Test()
{
List<bool> boolList = new List<bool>();
UpdateHistoryALL<bool>(boolList, true);
List<DateTime> times = new List<DateTime>();
UpdateHistoryALL<DateTime>(times, DateTime.Now);
List<string> texts = new List<string>();
UpdateHistoryALL<string>(texts, "文本");
}
如果要判斷最后一個是否相等,用這個
uj5u.com熱心網友回復:
private void UpdateHistoryALL<T>(T Value, List<T> HistoryList, List<DateTime> TimeList)
{
//處理空集合
HistoryList = HistoryList ?? new List<T>();
// 添加的值不允許null
if (Value != null && (
//如果是string不能是空字串
(typeof(T) == typeof(string) && !string.IsNullOrEmpty(Value.ToString()))
||
(typeof(T) != typeof(string))
)
//集合為空 或 集合最后一項!=value的時候添加到集合
&& (HistoryList.Last() == null || !HistoryList.Last().Equals(Value)))
{
HistoryList.Add(Value);
}
}
uj5u.com熱心網友回復:
一樣報錯,資訊如上uj5u.com熱心網友回復:
private void UpdateStringListHistory(string Value, List<string> HistoryList, List<DateTime> TimeList){
int Count = HistoryList.Count;
if (Count == 0)
{
if (Value != "")
{
HistoryList.Add(Value);
TimeList.Add(DateTime.Now);
}
}
else if (Value != HistoryList.Last())
{
HistoryList.Add(Value);
TimeList.Add(DateTime.Now);
}
}
private void UpdateBoolListHistory(bool Value, List<bool> HistoryList, List<DateTime> TimeList)
{
int Count = HistoryList.Count;
if (Count == 0)
{
HistoryList.Add(Value);
TimeList.Add(DateTime.Now);
}
else if (Value != HistoryList.Last())
{
HistoryList.Add(Value);
TimeList.Add(DateTime.Now);
}
}
這2個函式基本是一樣的,有辦法用一個泛型搞定么?
uj5u.com熱心網友回復:
private void UpdateHistoryALL<T>(T Value, List<T> HistoryList)
{
if (!HistoryList.Any())
{
HistoryList.Add(Value);
return;
}
var lastValue = HistoryList.LastOrDefault();
//用Equals判斷
if (!lastValue.Equals(Value)) HistoryList.Add(Value);
}
uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
private void UpdateBoolListHistory<T>(T Value, List<T> list, List<DateTime> time_ist)
{
int Count = list.Count;
if (Count == 0)
{
list.Add(Value);
time_ist.Add(DateTime.Now);
}
else if (!Value.Equals(list.Last()))
{
list.Add(Value);
time_ist.Add(DateTime.Now);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/269782.html
標籤:C#
上一篇:服務端安裝定時器好不好?
下一篇:對于控制業務邏輯的暫停/繼續,停止,例外發生時的提示重做/忽略(備注:多執行緒,部分業務是lock),請問大家有什么好的解決方案嗎?
