10 2 3 2 在 C 中以函式風格使用陣列

2021-06-28 00:01:05 字數 875 閱讀 9778

10.2.3.2 在 c# 中以函式風格使用陣列

由於有了 linq to object,在 c# 3.0 中,我們已經可以使用許多函式結構來處理陣列。大多數 linq 運算子不返回陣列:如果在陣列上呼叫 enumerable.select,結果將返回 ienumerable。在某些情況下,我們還是願意將結果儲存在陣列中,避免呼叫enumerable.toarray,將結果序列複製回陣列的開銷。

針對陣列的一些常用函式式操作,已經成為 system.array 類中的靜態方法;但它們的命名規則不同於 f# 和 linq,例如,你會發現對映操作,在 convertall 名下。我們將用標準的名字,實現我們的操作版本,進行演示。清單10.14 中還增加了類似於 f# 的 array.int 函式的方法。

清單 10.14 函式式處理陣列的方法(c#)

static class arrayutils ); 

foreach (var sq in squares) 

console.write("(, ) ", sq.number, sq.square);

就像在 f# 版本一樣,陣列一旦建立,就不能修改。從更高層次來看,它就是處理不可變資料結構的純函式**;當然,我們實際能夠進行修改,但僅限於 arrayutils 類中,c及只有在沒有公開給任何其他**的集合上進行。修改對外面是不可見的;在 c# 中,以這種方式寫**,是更有價值的,因為,這裡使用函式式列表要比在 f# 中更難。

我們本章的最後乙個主題是關於連續(continuations)的。可能有點難於理解,但是,一旦理解以後,可能會很吃驚。好訊息是,如果你曾經在 .net 中過寫任何非同步**,從某種意義上說,就已經使用了連續,而 f# 使之更容易。我們將在第十三章更詳細討論,使用連續,對於遞迴函式是非常重要的優化方法,因此,我們將在這裡關注一下。

C 中C風格字串的使用

char p abc p 1 x cout p 1 endl return 0 以上 會產生執行時錯誤,去掉p 1 x 或者把p定義改成char p abc 就能正常執行。如char p abc cout p 1 endl return 0 或char p abc p 1 x cout p 1 en...

在C中呼叫C 函式

由於c編譯器與c 編譯器之間的區別十分巨大,因此二者之間不可以直接互相呼叫各自的函式介面。但是,使用extern c 可以實現在c 中呼叫c 函式的功能,反之亦可。extern c 告訴c 編譯器,將花括號中的 按照c語言的規則進行編譯與鏈結。cppprint.cpp cppprint.h call...

在函式中以陣列作為形參的方法

本文介紹了三種在函式中以陣列作為形參時的處理方法,重點介紹c 11標準是如何管理陣列大小的。陣列的兩個特殊性質對我們定義和使用作用在陣列上的函式有影響,這兩個性質分別是 不允許拷貝陣列以及使用陣列時通常會將其轉換成指標。因為不能拷貝陣列,所以我們無法以值傳遞的方式使用陣列引數。因為陣列會被轉換成指標...