当前位置:编程学习 > C#/ASP.NET >>

代码评审活动开始了,把你的C#代码贴出来,大伙评审一下。

--------------------编程问答-------------------- 坐等看代码。。。反正码农一个,种地靠天收。 --------------------编程问答-------------------- 砸一点都不热闹呢 ,等围观 --------------------编程问答-------------------- 耶,不是被404删除了吗,怎么又出来了吗?莫非宕机,恢复数据了? --------------------编程问答-------------------- 楼主,先贴你的代码出来让我等码农仰望啊

--------------------编程问答-------------------- 码农一枚  不知道神马语言牛逼  只知道学一门能吃饭的手艺  坐等楼主贴代码 --------------------编程问答-------------------- 嘿,一个一个的都不敢贴出来了。
平时不是攘攘的很厉害吗? --------------------编程问答--------------------
引用 4 楼  的回复:
楼主,先贴你的代码出来让我等码农仰望啊

. --------------------编程问答--------------------
吃鱼去头去尾---种田的命 --------------------编程问答-------------------- 同感,微软商业用作较浓,源代码不透明,不能过于依赖, --------------------编程问答--------------------
引用 7 楼  的回复:
引用 4 楼 的回复:

楼主,先贴你的代码出来让我等码农仰望啊

.

反正我写的很烂 --------------------编程问答-------------------- int i=0; --------------------编程问答-------------------- 请指导:
public string main(string[] args)
{
    Console.Write("HelloWorld.");
} --------------------编程问答-------------------- 闲的蛋疼,所以就读完了你的帖子。
读完之后,真想抽你

1、微软的.net平台,2.0以后的版本都是在不停追加新组件和新特性,所以.net 2.0以后的版本不值得选择。
--2.0之后的确出了很多新的东西。但如果你只认为它们是一个个平凡的“组件”或者“特性”而已。那么我送你一句话“只见树木,不见森林”。说的就是你这种人

2、微软在技术方面并无任何建树,微软仅仅是一家为中小企业提供产品的公司,所以其产品很大局限性。那些迷信微软,觉得微软多厉害的同学,需要清醒了。微软是造成中国码农悲惨命运的罪魁祸首。
---你自己读一下第一句话,什么逻辑?简直毫无逻辑可以言,不值得一驳。至于第二句话,那更不值得一勃了。

3、微软相比其它公司、组织的技术的区别是:别的技术,只是构建万基本平台和基本库之后就没事了,比如C++,C++语言基本和平台无关,C++标准库讨论了很多年才确定下来;Java,也只是一个平台,SUN公司规定了一些标准后就不管了,其它各种组织和公司根据SUN的标准,实现了各种JavaEE容器。 而微软呢,自己不仅仅实现基本平台,还自己开发组件。

这样造成的问题是,其它平台只选注基本平台就可以了,各种第三方库可以少用或者不用; 而微软呢,由于其官方自己出新库和组件,造成你要是不学新库和组件,好像你还没学完,你技术不行似的。

--与1类似,还是那句话。只见树木不见森林。

4、各种编程经验有限的同学,以及眼界狭隘的同学,你不管你自认为自己的技术多牛逼,你要认清一点,微软从来不是一家真正的科技公司,微软是一家商业公司。 你们不应该因为自己就会C# ,就开始护短,容不得别人说.net不好,说微软不好,你们应该做的是虚心听译一下过来的人的意见。
--科技公司也罢,商业公司也罢。这不是站队,男的在左边,女的在右边那么简单。后面一段不做评论。

5、什么叫做高级技术,高级编程,设计模式? 之所以他们高,意思就是掌握的人少,进一步意思就是用的地方也少。中国的这些屌丝开发者普遍有一个个人英雄主义情绪,虽然我收入不高,公司很烂,但是只要我掌握了高级技术、设计模式,就能高人一等,就能有出头之日。

我告诉你,不见得,我认为,在你没能进入IBM,GOOGLE等牛逼公司之前,你是没资格谈什么高级技术和设计模式的。就好比你是一个租房吃地沟油的平民,你有资格去关心千里之外的一个小小钓鱼岛吗?你有资格去关心十八大谁当主席,美国打不打伊朗吗?
--弹的资格都没有么?这也说的太武断了。

基本技术都不牢靠的人,缺口口声声设计模式,你不嫌害臊吗?
--基本上同意,仅仅同意此句话而已。和上下文无关。

6、又有同学不服了,你凭什么这么说?你有多大本事?我还真没你们本事大,因为我已经从来不学微软的新技术了,我现在关注的是基础部分。

那个不服的高手,比如说那些什么wcf,wpf,wf,silverlight等新特性要求都会的哥们,比如说张口闭口设计模式,非把简单问题复杂化的哥们,比方说一个人当全才,什么都能做的哥们,你敢贴出你的基本代码让大家评审一下吗?

引用 12 楼 waiting593 的回复:
请指导:
public string main(string[] args)
{
    Console.Write("HelloWorld.");
}


--楼主,等你出招啊? --------------------编程问答--------------------
引用 13 楼 victo7 的回复:
闲的蛋疼,所以就读完了你的帖子。
读完之后,真想抽你

1、微软的.net平台,2.0以后的版本都是在不停追加新组件和新特性,所以.net 2.0以后的版本不值得选择。
--2.0之后的确出了很多新的东西。但如果你只认为它们是一个个平凡的“组件”或者“特性”而已。那么我送你一句话“只见树木,不见森林”。说的就是你这种人

2、微软在技术方面并无任何建树,微软仅……


孙子, Main写错了吧, 大写小呢.Main能返回String吗?

另外爷爷一般不用Console.WriteLine等, 爷爷一般用Console.Out.WriteLine, Console.Error.WriteLine,
在OS领域,三个重要的问文件描述符 0, 1, 2, 标准输出, 标准错误, 标准输入, 是如雷贯耳的概念.
如果你在命令后面 使用 1>out.txt 2>err.txt ,那标准输出和标准错误是会被写到不同的文件的

可惜微软这孙子, 经常搞封装, 经常故意回避基本基础的编程概念, 这不,又他妈的给标准输出起了一个间断的表示方法. --------------------编程问答-------------------- 坐等楼主贴神级代码。 --------------------编程问答-------------------- 楼主这种SB就四处装逼而已.
楼主最好的出路就是:让我重新射一次,让楼主重走一次阴道.以期来世做人.不在今世再做狗.四处装逼. --------------------编程问答-------------------- 楼主就一个培训班出来的货.楼上各位让它出招?这牲口除了会咬人外,还会有招?楼主这牲口只是狗狗学爬培训班出来的货,能出个毛招......只会装逼而已. --------------------编程问答-------------------- 楼主这种SB就四处装逼而已.
楼主最好的出路就是:让我重新射一次,让楼主从你妈那里重走一次阴道.以期来世做人.不在今世再做狗.四处装逼. --------------------编程问答-------------------- 我不觉得你用了一次linux就一定要鄙视一下用windows的用户才能显示出自己是高玩。如果你真觉得牛逼,把你windows盘下的《XX的先进性教育》片和系统卸载在说。 --------------------编程问答-------------------- 楼主懂个毛linux.这斯只是那些所谓培训班出来的SB而已,不过,在CSDN里装过了头......不知天高地厚的狗狗 而已....
--------------------编程问答-------------------- 期望楼主这狗狗的下一次装逼...最好装回你妈的子宫,再走一次阴道,只是希望,这次脑袋别被你妈的阴唇夹了..别被护士弄坏了脑袋...... --------------------编程问答-------------------- SB楼主消失了?不回来装装还真对不起你那SB一样的脑袋....  --------------------编程问答--------------------

坐等楼主贴出 神一般 的代码. --------------------编程问答-------------------- 楼主的屌丝情怀一览无遗啊~ --------------------编程问答--------------------
引用 楼主 linustd 的回复:
本人在此再重申一下个人观点:

1、微软的.net平台,2.0以后的版本都是在不停追加新组件和新特性,所以.net 2.0以后的版本不值得选择。
就冲这种幼稚变态的说法,你就不是一个真正搞开发的,而是一个被带坏了的小学生。 --------------------编程问答-------------------- 你知道2.0是什么时候发布的?

我们给写一个程序,都要每隔3个月甚至一个月就去给人家升级一次。你知道2.0什么发布的么?你凭什么不允许人家增加新组件、新特性?

我真的觉得这世界上没有一个精神正常的开发人员,会不知道自己是谁,从而以这种咆哮而开始砸场子。

就算想炒作,你也要低调一点开场啊。 --------------------编程问答--------------------
引用 楼主 linustd 的回复:
4、各种编程经验有限的同学,以及眼界狭隘的同学,你不管你自认为自己的技术多牛逼,你要认清一点,微软从来不是一家真正的科技公司,微软是一家商业公司。 你们不应该因为自己就会C# ,就开始护短,容不得别人说.net不好,说微软不好,你们应该做的是虚心听译一下过来的人的意见。
这也就是现学现卖。

别人也许说微软是走下坡路了、二流商业公司了,但是跟你的出发点完全不同。 --------------------编程问答-------------------- 楼主你去黑csnd吧 说的这么惨 哎 哎 哎 --------------------编程问答-------------------- LZ要是感觉自己很牛B的话,贴出Code让偶等 c#码农们一睹你的风采 --------------------编程问答--------------------
引用 29 楼 BohemianLife 的回复:
LZ要是感觉自己很牛B的话,贴出Code让偶等 c#码农们一睹你的风采


就凭第一条,就不可能啊。

人不能进步,贴出的代码也跟人一样啊。 --------------------编程问答-------------------- 版主也太猛了吧 --------------------编程问答-------------------- 楼主要真有料,就说说.net哪些地方不好?为什么不好? --------------------编程问答--------------------    谁真有本事假有本事还不好说呢?  --------------------编程问答-------------------- csdn原来就是.net平台的,不也跑了很多年了,不用.net重新开发,想必应该是考虑的成本问题,.net都是要钱的,而php呢,免费。楼主的说法太偏激了! --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 膜拜一下楼主神贴。 --------------------编程问答-------------------- 这贴要火,不过贴错地方了! --------------------编程问答-------------------- --------------------编程问答-------------------- 炒作吗?贴裸照你火的更快... --------------------编程问答-------------------- 引用 楼主 linustd 的回复:
各位C#的难兄难弟,

有谁关注CSDN的新闻的朋友,可能见过本人的留言。

本人在此再重申一下个人观点:

1、微软的.net平台,2.0以后的版本都是在不停追加新组件和新特性,所以.net 2.0以后的版本不值得选择。哥们 见识好浅哦

2、微软在技术方面并无任何建树,微软仅仅是一家为中小企业提供产品的公司,所以其产品很大局限性。那些迷信微软,觉得微软多厉害的同学,需要清醒了。微软是造成中国码农悲惨命运的罪魁祸首。
严重对你无语了,你说的事情是中国这个特殊的情况, 因为国内都用盗版谁用正版, 你去看看国外。 SCCM 听过吗,空客 澳大利亚众议院都买这个产品,不知道就不要乱说好吧

3、微软相比其它公司、组织的技术的区别是:别的技术,只是构建万基本平台和基本库之后就没事了,比如C++,C++语言基本和平台无关,C++标准库讨论了很多年才确定下来;Java,也只是一个平台,SUN公司规定了一些标准后就不管了,其它各种组织和公司根据SUN的标准,实现了各种JavaEE容器。 而微软呢,自己不仅仅实现基本平台,还自己开发组件。
开源真的很好吗?
这样造成的问题是,其它平台只选注基本平台就可以了,各种第三方库可以少用或者不用; 而微软呢,由于其官方自己出新库和组件,造成你要是不学新库和组件,好像你还没学完,你技术不行似的。
自己不去理解底层的东西,拿来主义典型例子。不忘底层研究还怪人家

4、各种编程经验有限的同学,以及眼界狭隘的同学,你不管你自认为自己的技术多牛逼,你要认清一点,微软从来不是一家真正的科技公司,微软是一家商业公司。 你们不应该因为自己就会C# ,就开始护短,容不得别人说.net不好,说微软不好,你们应该做的是虚心听译一下过来的人的意见。
公司追去的是产品的质量,不同的需求用不同的技术 存在既合理

5、什么叫做高级技术,高级编程,设计模式? 之所以他们高,意思就是掌握的人少,进一步意思就是用的地方也少。中国的这些屌丝开发者普遍有一个个人英雄主义情绪,虽然我收入不高,公司很烂,但是只要我掌握了高级技术、设计模式,就能高人一等,就能有出头之日。
程序员到架构师 这个是个很漫长的路 设计模式也是一个很大的坎
我告诉你,不见得,我认为,在你没能进入IBM,GOOGLE等牛逼公司之前,你是没资格谈什么高级技术和设计模式的。就好比你是一个租房吃地沟油的平民,你有资格去关心千里之外的一个小小钓鱼岛吗?你有资格去关心十八大谁当主席,美国打不打伊朗吗?

基本技术都不牢靠的人,缺口口声声设计模式,你不嫌害臊吗?

6、又有同学不服了,你凭什么这么说?你有多大本事?我还真没你们本事大,因为我已经从来不学微软的新技术了,我现在关注的是基础部分。

那个不服的高手,比如说那些什么wcf,wpf,wf,silverlight等新特性要求都会的哥们,比如说张口闭口设计模式,非把简单问题复杂化的哥们,比方说一个人当全才,什么都能做的哥们,你敢贴出你的基本代码让大家评审一下吗? --------------------编程问答-------------------- 围观大神节操
--------------------编程问答-------------------- 除 --------------------编程问答-------------------- 请楼主贴出基础部分代码,我等码农学习参考一下!!!! --------------------编程问答--------------------
引用 14 楼 linustd 的回复:
Quote: 引用 13 楼 victo7 的回复:

闲的蛋疼,所以就读完了你的帖子。
读完之后,真想抽你

1、微软的.net平台,2.0以后的版本都是在不停追加新组件和新特性,所以.net 2.0以后的版本不值得选择。
--2.0之后的确出了很多新的东西。但如果你只认为它们是一个个平凡的“组件”或者“特性”而已。那么我送你一句话“只见树木,不见森林”。说的就是你这种人

2、微软在技术方面并无任何建树,微软仅……


孙子, Main写错了吧, 大写小呢.Main能返回String吗?

另外爷爷一般不用Console.WriteLine等, 爷爷一般用Console.Out.WriteLine, Console.Error.WriteLine,
在OS领域,三个重要的问文件描述符 0, 1, 2, 标准输出, 标准错误, 标准输入, 是如雷贯耳的概念.
如果你在命令后面 使用 1>out.txt 2>err.txt ,那标准输出和标准错误是会被写到不同的文件的

可惜微软这孙子, 经常搞封装, 经常故意回避基本基础的编程概念, 这不,又他妈的给标准输出起了一个间断的表示方法.



Main能返回String吗?   没用过就不要说不能! --------------------编程问答-------------------- 围观不知天高地厚的楼主~ --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 据说有人要做代码评审(code review)?好呀好呀

请给鄙人的代码评审一下吧,欢迎您多提宝贵意见!
http://blog.csdn.net/yapingxin/article/details/8018057 --------------------编程问答-------------------- 代码贴出来:


// -----------------------------------------------------------------------  
// <copyright file="UInt64MaskHelper.cs" author="Yaping Xin">  
//  
//  
//  File Name           : UInt64MaskHelper.cs  
//  Description         : Helper class to support UInt64 bit mask.  
//  Project Title       : UInt64MaskHelper  
//  Author(s)           : Yaping Xin  
//  Code Review Done    :  
//  Modification History: (1) Created at Aug 10, 2012  
//                      : (2) Add static function bool[] GetBits(ulong value)  
//                      :     at Sep 25, 2012   
// </copyright>  
// -----------------------------------------------------------------------  
namespace BitsHelper  
{  
    using System;  
    using System.Globalization;  
  
    /// <summary>  
    /// Helper class to support UInt64 bit mask.  
    /// </summary>  
    public static class UInt64MaskHelper  
    {  
        #region Constant definition  
        /// <summary>  
        /// Constant definition of max avaiable bytes length.  
        /// </summary>  
        public const int MaxBytesLength = 8;  
  
        /// <summary>  
        /// Constant definition bits count within a byte  
        /// </summary>  
        public const int ByteBitsCount = 8;  
        #endregion Constant definition  
 
        #region Useful Bytes/Bits static readonly array definition  
        /// <summary>  
        /// Array of UInt64 byte mask values.  
        /// </summary>  
        private static readonly ulong[] U64ByteMaskValues = new ulong[]  
        {  
            0x00000000000000FF,   
            0x000000000000FF00,   
            0x0000000000FF0000,   
            0x00000000FF000000,   
            0x000000FF00000000,   
            0x0000FF0000000000,   
            0x00FF000000000000,   
            0xFF00000000000000  
        };  
  
        /// <summary>  
        /// Array of max values storaged in different amount of bytes within UInt64 scope.   
        /// </summary>  
        private static readonly ulong[] U64BytesMaxValues = new ulong[]  
        {  
            0x00000000000000FF,  
            0x000000000000FFFF,  
            0x0000000000FFFFFF,  
            0x00000000FFFFFFFF,  
            0x000000FFFFFFFFFF,  
            0x0000FFFFFFFFFFFF,  
            0x00FFFFFFFFFFFFFF,  
            0xFFFFFFFFFFFFFFFF  
        };  
  
        /// <summary>  
        /// Array of shift values to specific byte lowest bit position.  
        /// </summary>  
        private static readonly byte[] BytePositionShiftValues = new byte[]  
        {  
            0, 8, 16, 24, 32, 40, 48, 56  
        };  
  
        /// <summary>  
        /// Array of byte bit mask values.  
        /// </summary>  
        private static readonly byte[] ByteBitMaskValues = new byte[]  
        {  
            0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80  
        };  
  
        /// <summary>  
        /// Array of byte bit mask values.  
        /// </summary>  
        private static readonly byte[] ByteBitOffMaskValues = new byte[]  
        {  
            0xFE, 0xFD, 0xFB, 0xF7, 0xEF, 0xDF, 0xBF, 0x7F  
        };  
        #endregion Useful Bytes/Bits static readonly array definition  
 
        #region Enumeration definition  
        /// <summary>  
        /// Enumeration definition of the error code  
        /// </summary>  
        public enum ErrorCode : uint  
        {  
            /// <summary>No error occurs</summary>  
            OK = 0,  
  
            /// <summary>Argument is Null</summary>  
            ArgumentIsNull = 1,  
  
            /// <summary>Argument is out of range</summary>  
            ArgumentOutOfRange = 2,  
        }  
        #endregion Enumeration definition  
 
        #region Encoding methods (numeric value to bytes/bits)  
        /// <summary>  
        /// Gets the bytes array to storage the specific UInt64 value.  
        /// Notes: the returned array contains MaxBytesLength items.  
        /// </summary>  
        /// <param name="value">The specific UInt64 value.</param>  
        /// <returns>The bytes array which contains MaxBytesLength items.</returns>  
        public static byte[] GetBytes(ulong value)  
        {  
            byte[] result = new byte[MaxBytesLength];  
  
            ulong maskResult = value & U64ByteMaskValues[0];  
            result[0] = (byte)maskResult;  
  
            for (int i = 1; i < MaxBytesLength; i++)  
            {  
                maskResult = value & U64ByteMaskValues[i];  
                result[i] = (byte)(maskResult >> BytePositionShiftValues[i]);  
            }  
  
            return result;  
        }  
  
        /// <summary>  
        /// Gets the bits array to storage the specific UInt64 value.  
        /// Notes: the returned array contains MaxBytesLength * ByteBitsCount items.  
        /// </summary>  
        /// <param name="value">The specific UInt64 value.</param>  
        /// <returns>The bits array which contains MaxBytesLength * ByteBitsCount items.</returns>  
        public static bool[] GetBits(ulong value)  
        {  
            bool[] bits = new bool[MaxBytesLength * ByteBitsCount];  
            byte[] bytes = UInt64MaskHelper.GetBytes(value);  
  
            byte byteValue;  
            byte bitValue;  
            byte mask;  
  
            int i = 0;  
  
            for (int indexBytes = 0; indexBytes < bytes.Length; indexBytes++)  
            {  
                for (byte bitPosition = 0; bitPosition < ByteBitsCount; bitPosition++)  
                {  
                    byteValue = bytes[indexBytes];  
  
                    if (bitPosition == 0)  
                    {  
                        bitValue = (byte)(byteValue & ByteBitMaskValues[0]);  
                    }  
                    else  
                    {  
                        mask = (byte)(byteValue & ByteBitMaskValues[bitPosition]);  
                        bitValue = mask >>= bitPosition;  
                    }  
  
                    bits[i] = bitValue == 1;  
                    i++;  
                }  
            }  
  
            return bits;  
        }  
  
--------------------编程问答-------------------- 一次还贴不完。接着贴:


        /// <summary>  
        /// Gets the byte at specific position from the UInt64 value.  
        /// Notes: this function will not return detailed error code while error occurs.  
        /// </summary>  
        /// <param name="value">The UInt64 value.</param>  
        /// <param name="bytePosition">The byte position.</param>  
        /// <param name="result">The byte to get.</param>  
        /// <returns>  
        ///   <c>true</c> indicates no error occurs during calculating;   
        ///   <c>fasle</c> indicates error occurs.  
        /// </returns>  
        public static bool GetByte(ulong value, int bytePosition, out byte result)  
        {  
            ErrorCode errorCode;  
            return UInt64MaskHelper.GetByte(value, bytePosition, out result, out errorCode);  
        }  
  
        /// <summary>  
        /// Gets the byte at specific position from the UInt64 value.  
        /// </summary>  
        /// <param name="value">The UInt64 value.</param>  
        /// <param name="bytePosition">The byte position.</param>  
        /// <param name="result">The byte to get.</param>  
        /// <param name="errorCode">The error code.  
        /// Will be set to ErrorCode.OK if no error occurs.</param>  
        /// <returns>  
        ///   <c>true</c> indicates no error occurs during calculating;   
        ///   <c>fasle</c> indicates error occurs, and detailed error is wrote in errorCode output parameter.  
        /// </returns>  
        public static bool GetByte(  
            ulong value,  
            int bytePosition,  
            out byte result,  
            out ErrorCode errorCode)  
        {  
            if (bytePosition < 0 || bytePosition >= MaxBytesLength)  
            {  
                result = 0;  
                errorCode = ErrorCode.ArgumentOutOfRange;  
                return false;  
            }  
  
            ulong maskResult;  
  
            if (bytePosition == 0)  
            {  
                maskResult = value & U64ByteMaskValues[0];  
  
                goto EXIT_PASS;  
            }  
  
            maskResult = value & U64ByteMaskValues[bytePosition];  
            maskResult >>= BytePositionShiftValues[bytePosition];  
  
        EXIT_PASS:  
            result = (byte)maskResult;  
            errorCode = ErrorCode.OK;  
            return true;  
        }  
  
        /// <summary>  
        /// Gets the bit at specific position from the byte value.  
        /// Notes: this function will not return detailed error code while error occurs.  
        /// </summary>  
        /// <param name="value">The byte value.</param>  
        /// <param name="bitPosition">The bit position.</param>  
        /// <param name="result">The bit (0 or 1) to get.</param>  
        /// <returns>  
        ///   <c>true</c> indicates no error occurs during calculating;   
        ///   <c>fasle</c> indicates error occurs.  
        /// </returns>  
        public static bool GetBit(byte value, int bitPosition, out byte result)  
        {  
            ErrorCode errorCode;  
            return UInt64MaskHelper.GetBit(value, bitPosition, out result, out errorCode);  
        }  
  
        /// <summary>  
        /// Gets the bit at specific position from the byte value.  
        /// </summary>  
        /// <param name="value">The byte value.</param>  
        /// <param name="bitPosition">The bit position.</param>  
        /// <param name="result">The bit (0 or 1) to get.</param>  
        /// <param name="errorCode">The error code.  
        /// Will be set to ErrorCode.OK if no error occurs.</param>  
        /// <returns>  
        ///   <c>true</c> indicates no error occurs during calculating;   
        ///   <c>fasle</c> indicates error occurs, and detailed error is wrote in errorCode output parameter.  
        /// </returns>  
        public static bool GetBit(  
            byte value,  
            int bitPosition,  
            out byte result,  
            out ErrorCode errorCode)  
        {  
            if (bitPosition < 0 || bitPosition >= ByteBitsCount)  
            {  
                result = 0;  
                errorCode = ErrorCode.ArgumentOutOfRange;  
                return false;  
            }  
  
            if (bitPosition == 0)  
            {  
                result = (byte)(value & ByteBitMaskValues[0]);  
                errorCode = ErrorCode.OK;  
                return true;  
            }  
  
            byte maskResult = (byte)(value & ByteBitMaskValues[bitPosition]);  
            result = maskResult >>= bitPosition;  
            errorCode = ErrorCode.OK;  
            return true;  
        }  
        #endregion Encoding methods (numeric value to bytes/bits)  
 
        #region Decoding methods (bytes/bits to numeric value)  
        /// <summary>  
        /// Gets the UInt64 value from bytes array.  
        /// Notes: this function will not return detailed error code while error occurs.  
        /// </summary>  
        /// <param name="bytes">The bytes array.</param>  
        /// <param name="value">The UInt64 value.</param>  
        /// <returns>  
        ///   <c>true</c> indicates no error occurs during calculating;   
        ///   <c>fasle</c> indicates error occurs.  
        /// </returns>  
        public static bool GetUInt64(byte[] bytes, out ulong value)  
        {  
            ErrorCode errorCode;  
            return UInt64MaskHelper.GetUInt64(bytes, out value, out errorCode);  
        }  
  
        /// <summary>  
        /// Gets the UInt64 value from bytes array.  
        /// </summary>  
        /// <param name="bytes">The bytes array.</param>  
        /// <param name="value">The UInt64 value.</param>  
        /// <param name="errorCode">The error code.  
        /// Will be set to ErrorCode.OK if no error occurs.</param>  
        /// <returns>  
        ///   <c>true</c> indicates no error occurs during calculating;   
        ///   <c>fasle</c> indicates error occurs, and detailed error is wrote in errorCode output parameter.  
        /// </returns>  
        public static bool GetUInt64(byte[] bytes, out ulong value, out ErrorCode errorCode)  
        {  
            if (bytes == null || bytes.Length == 0)  
            {  
                errorCode = ErrorCode.ArgumentIsNull;  
                value = 0;  
                return false;  
            }  
  
            if (bytes.Length > MaxBytesLength)  
            {  
                errorCode = ErrorCode.ArgumentOutOfRange;  
                value = 0;  
                return false;  
            }  
  
            ulong result = bytes[0];  
            ulong byteValue;  
  
            if (bytes.Length > 1)  
            {  
                for (int i = 1; i < bytes.Length; i++)  
                {  
                    byteValue = bytes[i];  
                    byteValue <<= BytePositionShiftValues[i];  
                    result += byteValue;  
                }  
            }  
  
            value = result;  
            errorCode = ErrorCode.OK;  
            return true;  
        }  
  
--------------------编程问答-------------------- 呵呵,我现在做的事情大致是这样的
using Common;
using MongoDB.Bson;
using MongoDB.Bson.Serialization;
using MongoDB.Driver;
using System;
using System.Dynamic;
using System.Linq;

namespace EmergencyTasks.BLL
{
    [CommunicationCommand(typeof(EmergencyTasks.Commands.QueryCustomerGroupedDatas))]
    class QueryCustomerGroupedDatas : CommandV3<EmergencyTasks.Commands.QueryCustomerGroupedDatas, ExpandoObject[]>
    {
        public override ExpandoObject[] Execute(string passport)
        {
            var bag = EmergencyTasksExtensions.Mongo(this.Session.EnpterpriceName).GetCollection<MongoDB.Bson.BsonDocument>("Task");
            var qrs = new QueryDocument();
            if (this.Command.BaselineTypeName != null && this.Command.BaselineTypeName != string.Empty)
                qrs.Add("TypeName", this.Command.BaselineTypeName);
            if (this.Command.QueryCondition != null)
            {
                foreach (var dm in BsonDocument.Parse(this.Command.QueryCondition))
                    qrs.Add(new BsonElement("CustomerDocument." + dm.Name, dm.Value));
            }
            var query = from x in bag.Find(qrs)
                        where x.Contains("CustomerDocument") && !x["CustomerDocument"].IsBsonNull
                        let r = x["CustomerDocument"].AsBsonDocument
                        where r.Contains(this.Command.GroupBy)
                        where !r[this.Command.GroupBy].IsBsonNull
                        let gvalue = r[this.Command.GroupBy].AsString
                        group r by gvalue into gr
                        select (from y in gr
                                orderby Convert.ToDouble(y[this.Command.OrderBy]) descending
                                select y).FirstOrDefault();
            var result = (from r in query
                          let robj = Cut(r, this.Command.FieldsReturnValue)
                          let obj = BsonSerializer.Deserialize<ExpandoObject>(robj)
                          select obj).ToArray();
            return result;
        }

        private BsonDocument Cut(BsonDocument input, string[] fields)
        {
            (from em in input.Elements
             where !fields.Contains(em.Name)
             select em.Name)
                 .ToList()
                 .ForEach(nm => input.Remove(nm));
            return input;
        }
    }
}



话说回来,看了楼主的论点一,我就哇哇吐了。那种论调对.net绝对是疯狂的挖墙脚烂招啊! --------------------编程问答-------------------- 前端设计和研发是产品秘密,顶多能给lz看看(我自己一个人写的某一个产品)几十万行服务器端代码里的几行。 --------------------编程问答-------------------- 码农一枚,观望来了.. --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 看了一下,LZ确实是没资格谈什么设计模式。
补充:.NET技术 ,  分析与设计
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,