Digital singing (under the Cryptography) is a broad area. So what you exactly want to do with signing?
When comes to Hashing, MACs and DSs, all are doing somewhat (not exactly) similar job. Using under different scenarios. So please clarify your exact requirement.
Updated my comment.
You need a hash to digitally sign a document. Because digital signatures are created from hash.
SHA1 mySha1 = new SHA1CryptoServiceProvider();
byte[] hash = mySha1 .ComputeHash(byte_array);
Make sure to have your document in a byte array. If it's larger one you have to think about a better implementation.
Create a digital signature using generated Hash. Have a look at
DSACryptoServiceProvider. Then with the received data verify the signature and deals with the data as you wish.