.NET(C#):擷取方法傳回值的自訂特性(Attribute)

.NET中特性的索取就是圍繞著ICustomAttributeProvider介面(System.Reflection命名空間內),而MethodInfo類的ReturnTypeCustomAttributes屬性直接返回方法傳回值的ICustomAttributeProvider介面對象。同時MethodBase的ReturnParameter屬性返回方法傳回值資訊(ParameterInfo),而ParameterInfo也是繼承ICustomAttributeProvider的,所以這兩個

.NET(C#):使用AsymmetricSignatureFormatter類和AsymmetricSignatureDeformatter類

在前一篇文章:.NET(C#):RSA的SignHash和VerifyHash,我講到使用RSA的SignHash和VerifyHash可以同樣做到SignData和VerifyData,事實上還有一種方法進行公開金鑰加密的簽名認證。就是.NET中的AsymmetricSignatureFormatter和AsymmetricSignatureDeformatter。直接翻譯就是“不對稱式加密簽名格式化器和反格式化器”。分明用來進行建立簽名和驗證簽名的。 他們都需要操作一個不對稱式加密類型(即公

C# 播放聲音

System.Media.SoundPlayer player = new System.Media.SoundPlayer();player.SoundLocation = @"d:\music\happy.wav";player.Load();player.Play();非同步播放: System.Media.SoundPlayer player = new System.Media.SoundPlayer();player.SoundLocation = @"d:\music\happy.

.NET(C#):用CryptoStream計算雜湊值

我們都知道用HashAlgorithm.ComputeHash方法可以計算資料的雜湊值。不過System.Security.Cryptography.HashAlgorithm類是繼承ICryptoTransform介面的,那麼,通過CryptoStream(或者直接操作ICryptoTransform)也是可以計算雜湊值的。 ICryptoTransform的輸入資料就是需要計算雜湊值的來源資料,不過ICryptoTransform的輸出資料和輸入資料是一樣的,真正的雜湊值存在HashAlgo

.NET(C#):使用CspParameters為RSA(或者DSA)提供密鑰本機存放區

RSACryptoServiceProvider和DSACryptoServiceProvider的建構函式都可以指定一個CspParameters結構體。利用這個CspParameters結構體我們可以自訂不對稱式加密演算法的密鑰CSP本機存放區名稱(就是密鑰容器:KeyContainer),這個容器預設是儲存在Windows使用者設定檔中的。如果你想把金鑰儲存區在電腦範圍內(而不是使用者範圍),可以用RSACryptoServiceProvider(或者DSACryptoServicePro

從輸出位元組數組品味.NET(C#)的靈活性

跟電腦打交道難免經常需要輸出一個位元組數組。這篇文章就講講怎樣輸出一個位元組數組在.NET下的各種方法: 最快捷方法:string BitConverter.ToString(byte[])方法。(有重載支援位元組數組的部分輸出) 代碼:Console.WriteLine(BitConverter.ToString(new byte[] { 1, 3, 54, 123, 199, 200, 215, 255

.NET(C#)平台叫用:類和結構體的封送

以GetCursorPos做樣本,它返回當前滑鼠指標在螢幕的位置(以一個POINT結構體)。關於GetCursorPos和POINT的定義可以參考MSDN:http://msdn.microsoft.com/en-us/library/ms648390(v=vs.85).aspxhttp://msdn.microsoft.com/en-us/library/dd162805(v=vs.85).aspx 首先實現用自訂C#結構體來調用GetCursorPos,一切看著很簡單。定義一個記憶體分別連續

.NET(C#):訊號量(Semaphore)的初始請求數和最大請求數

其實.NET中的訊號量(Semaphore)是作業系統維持的一個整數。當整數位0時。其他線程無法進入。當整數大於0時,線程可以進入。每當一個線程進入,整數-1,線程退出後整數+1。整數不能超過訊號量的最大請求數。訊號量在初始化的時候可以指定這個整數的初始值。 System.Threading.Semaphore類的建構函式的兩個參數第一個就是訊號量的內部整數初始值,也就是初始請求數,第二個參數就是最大請求數。如果沒有額外操作訊號量的話,訊號量的運行限制就取決於這個初始請求數,比如下面代碼://+

.NET(C#):警惕PLINQ結果的無序性

PLINQ的運行結果是無序的,也就是不保持原來集合的順序來操作(當然除了一些專門的排序操作)。原因則是線程的並發執行本來就充滿了不確定性,把原來一個任務分割成好幾個部分同時進行返回的結果會打亂原來的順序,如果要強制保留順序,肯定要浪費一些效能,PLINQ是可以這樣的,但預設不這樣。 先看一個LINQ樣本:var arr = new int[] { 1, 2, 3, 4, 5 };var res = arr.Where(i => i != 3);結果是:1, 2, 4,

.NET(C#):XmlReader和Whitespace以及MoveToContent和ReadToFollowing方法

XmlReader預設是讀取XML檔案中的Whitespace和注釋的。 比如這個XML:<root>    <!-- root中 -->    <file>                <file.attr>hidden</file.attr>        a.txt    </file></root> XmlReader讀取代碼://data.xml代表上面的XML檔案using (var xr =

.NET(C#):中各種建立不區分大小寫字典的方法

非泛型類:Hashtable 從.NET Framework 1.0就有的方法1. 直接構建Hashtable類利用的建構函式:public Hashtable(IHashCodeProvider hcp, IComparer comparer); 構建方法:Hashtable hashtable = new Hashtable(CaseInsensitiveHashCodeProvider.Default,

.NET(C#): 為Collection加入成員添加刪除事件

通過繼承Collection<T>類型,並為其加入兩個事件ItemAdded和ItemRemoved,使用這兩個事件可以覺察到容器內項目的添加和刪除的操作。事件提供元素值和索引值的資料,使用起來如下:static void Main(string[] args){    var list = new MyCollection<string>();    list.ItemAdded += list_ItemAdded;    list.ItemRemoved +=

C++隨筆(一)

1、一個位元組是8位,也就是8個“1”或是“0”。2、記憶體被劃分成許多編了號的位元組的列表,該編號為位元組的地址。3、一組連續的位元組可作為一個資料項目(比如數字或字母)的儲存位置來使用,也可以稱之為記憶體塊。組內第一個位元組的位置就是這個更大的儲存位置的地址,也稱之為記憶體塊地址。4、編譯器是一個中特殊的程式,它能將進階語言程式(比如C++程式),也可稱為來源程式轉換成機器語言程式,也可稱為目標程式,使計算能直接理解並執行。5、C++程式的目標碼(目標程式,機器碼)與程式用到的常式(比如輸入

.NET(C#):使用ResourceManager類型

注意:這是另一篇文章“.NET(C#):淺談資訊清單資源和RESX資源”的一部分。ResourceManager類型在System.Resources命名空間內,用來在運行時刻進行二進位資訊清單資源(.resources檔案)的讀取,其也支援外部檔案形式的讀取。它和其他資源讀取類:ResourceSet和IResourceReader的區別是它的功能是最強大的(內部會使用一個ResourceSet),因為不因能夠像ResourceSet一樣快速讀取資源資料,它可以對.NET中程式集的附屬組件(s

C#和C++的一個有意思的差別

看到一篇有意思的文章:http://blogs.msdn.com/lucabol/archive/2004/08/31/223580.aspx。“x+=x++”的結果是什嗎?如果是C++,由於C++標準沒有規定運算子“+”的左右兩邊的子運算式的運算順序,所以結果是未定義的。而C#標準則明確規定了“+”的兩邊的運算順序是從左至右,所以是可以得到“x+=x++”的確切的值的。比如x = 3,下面是C#編譯器的解釋順序:1、首先解釋“+=”,將運算式轉為“x = x + (x++)”;2、先計算“+”

C# 效能最佳化實踐)

作者 胡森 發佈於 五月 15, 2013 效能主要指兩個方面:記憶體消耗和執行速度。效能最佳化簡而言之,就是在不影響系統運行正確性的前提下,使之運行地更快,完成特定功能所需的時間更短。本文以.NET平台下的控制項產品MultiRow為例,描述C#效能最佳化的實踐。· 理解需求 MultiRow的一個效能需求是:“百萬行資料繫結下平滑滾動。”整個MultiRow項目的開發過程一直在考慮這個目標。· 理解瓶頸 99%的效能消耗是由於1%的代碼造成的。大部分效能最佳化都是針對這1%的瓶頸代碼進行的。

C語言 指標練習-選擇排序法

#include <stdio.h>void print_result(float *,int);void Select_Sort(float *,int);int main(){int i;float array[10];float * pointer; printf("請輸入10個數:\n");for(i=0;i<10;i++) { scanf("%f",&array[i]); } pointer=array;

C語言 指標練習-希爾排序法

#include <stdio.h>void print_result(float *,int);void Shell_Sort(float *,int);int main(){int i;float array[10];float * pointer; printf("請輸入10個數:\n");for(i=0;i<10;i++) { scanf("%f",&array[i]); } pointer=array; Shell_

C語言 指標練習-冒泡排序法

以前用數組寫過各種排序方法,現在用指標來試下了“冒泡排序法”。 代碼如下:#include <stdio.h>void print_result(float *,int);void bubble_sort(float *,int);int main(){int i;float array[10];float * pointer; printf("請輸入10個數:\n");for(i=0;i<10;i++) {

C語言-PlaySound demo

#include <windows.h>#include <mmsystem.h>#include <stdio.h>//#pragma comment(lib, "Winmm.lib")int main(int argc, char *argv[]){PlaySound (TEXT("D:\\sound\\Speech Off.wav"), NULL, SND_FILENAME | SND_NODEFAULT); printf("start...")

總頁數: 4314 1 .... 3850 3851 3852 3853 3854 .... 4314 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.