class mylist : ienumerable
ienumerator ienumerable.getenumerator()
}class program
return sum;
}static int mymax(mylist list)
return max;
}static void main(string args)
}//需求一:如果需要乙個 mylist2 類,其他方法不變,那麼**的重複率又會很高
//解決辦法:更改傳入型別 mylist 為介面型別:
static int mycount(ienumerablelist)
static int mymax(ienumerablelist)
//需求二:c#是物件導向程式設計,方法應該放在類中,而 mycount、mymax 是外接方法
//解決辦法:將方法放在類中
class mylist : ienumerable
ienumerator ienumerable.getenumerator()
public int mycount()
return sum;
}public int mymax()
return max;}}
static void main(string args)
//需求三:mylist 和 mylist2 中都需要設定函式,**重複率高並且無法封閉
//解決辦法:使用擴充套件方法
// 1、定義靜態類 2、定義靜態方法 3、使用this關鍵字指示例項化物件
//新建乙個mylist方法的靜態類
static class mylistfunc
return sum;
}public static int mymax(this mylist list)
return max;}}
//將型別改為介面型
public static int mycount(this ienumerablelist)
擴充套件運算子
三個點,主要是用來將陣列幻化為用逗號分隔的引數序列。合併陣列 與解構賦值結合 如果將擴充套件運算子用於陣列賦值,只能放在引數的最後一位,否則會報錯。將字串轉為真正的陣列 可以將類似陣列的物件轉為真正的陣列 map和set結構,generator函式 擴充套件運算子內部呼叫的是資料解構的iterato...
擴充套件運算子
首先點明,es6的新特性之擴充套件運算子 spread 就是三個點 和es6的可變引數形式一樣。擴充套件運算子是很強大的乙個運算子,它能簡化很多在es5中會比較繁雜的操作。對於這個運算子,概念性的東西不多,所以這裡我就簡明扼要的給出一些它的常用場景 1 可變引數。雖然可變引數嚴格說不是擴充套件運算子...
擴充套件運算子
使用擴充套件運算子 拷貝陣列。const a,b 1,2,3 a 1 b 2,3 bad const len items.length const itemscopy let i for i 0 i len i good const itemscopy items 1 結構賦值 物件的解構賦值用於從...