面向对象之三大特征,基于DEV控件库的webservice打
分类:long8

Program

ASCII(American Standard Code for Information Interchange,U.S.A.消息沟通标准代码卡塔 尔(阿拉伯语:قطر‎是豆蔻年华套基于拉丁字母的字符编码,共收音和录音了 128 个字符,用几个字节就足以积存,它相近国际规范 ISO/IEC 646。ASCII 典型于 一九六九 年第三次公布,最后二次改革是在 1987 年,它蕴涵了 叁拾四个调整字符(具备有些特殊作用然则力不能及体现的字符卡塔 尔(阿拉伯语:قطر‎和 95 个可呈现字符。

先是需求增多Dll引用

2.涉嫌到的组件

  • 构件1:ToolGood.Words【小编其实的正是这种】
  1. 零构件名称:ToolGood.Words
  2. nuget地址:
  3. github地址【提示:500多个star】

假诺说命名空间是类库的逻辑组织情势,那么程序集正是类库的概略组织情势。独有同一时候钦命项目所在的命名空间及贯彻该项指标程序集,技术一心节制该品种。(摘抄自《驾驭.NET主旨技能--原本与架构》 电子工业出版社卡塔尔国

龙8国际娱乐手机登入 1龙8国际娱乐手机登入 2

对调控字符的表达

ASCII 编码中第 0~31 个字符(最早的 32 个字符卡塔尔国甚至第 130个字符(最终一个字符卡塔尔都是不可知的(不可能出示卡塔 尔(阿拉伯语:قطر‎,不过它们都具有部分独特功效,所以称为调节字符( Control Character卡塔 尔(阿拉伯语:قطر‎恐怕成效码(Function Code卡塔尔国。

那 叁拾四个调控字符大都与通讯、数据存款和储蓄以至老式道具有关,某些在今世计算机中的含义已经济体改成了。

些微调节符要求自然的微型机根底技术领会,初读书人能够跳过,选取轻巧的掌握就能够。

 

上边列出了有的调控字符的切实可行成效:

  • #### NUL (0)

    NULL,空字符。空字符伊始本意能够看作为 NOP(中文意为空操作,就是啥都不做的意味卡塔尔国,此岗位能够忽视三个字符。

    为此有其生龙活虎空字符,重假使用来Computer开始时期的记录消息的纸带,此处留个 NUL 字符,意思是先占这几个岗位,以待后用,举例你何时想起来了,在此个任务在放五个别的什么字符之类的。

    后来吧,NUL 被用于C语言中,表示字符串的扫尾,当贰个字符串中间出现NUL 时,就表示那几个是三个字符串的末尾了。那样就低价依据自个儿要求去定义字符串,多少长度都行,当然倘令你内部存储器放得下,然后最后加三个,即空字符,意思是日前字符串到此截至。

  • #### SOH (1)

    Start Of Heading,标题开端。纵然消息交换调换首要以命令和音讯的款式来讲,SOH 就足以用来标识各个音信的始发。

    壹玖陆伍年,最初先 ASCII 标准中,把此字符定义为 Start of Message,后来又改为后天的 Start Of Heading。

    当今,那几个 SOH 管见所及于主从(master-slave卡塔 尔(英语:State of Qatar)情势的 奥迪Q5S232 的通讯中,二个主设备,以 SOH 之前,和从设备开展通讯。那样有助于从设备在数据传输现身谬误的时候,在下三次通讯在此之前,去落实重新联合(resynchronize卡塔尔国。若无叁个鲜明的贴近于 SOH 那样的号子,去标识各个命令的开始或起先的话,那么重新联合,就很难落到实处了。

  • #### STX (2) 和 ETX (3)

    STX 表示 Start Of Text,意思是“文本初阶”;ETX 表示 End Of Text,意思是“文本甘休”。

    通过某种通信合同去传输的三个数目(包卡塔 尔(英语:State of Qatar),称为大器晚成帧以来,常会蕴藏四个帧头,包括了寻址音信,即你是要发放哪个人,要发送到目的地是哪儿,其后跟着真正要发送的数目内容。

    而 STX,就用于标志那些数额内容的起始。接下来是要传输的数量,最终是 ETX,评释数据的完成。

    而中级具体传输的多寡内容,ASCII 并从未去定义,它和您所用的传导合同有关。

    帧头

  • #### BEL (7)

    BELl,响铃。在 ASCII 编码中,BEL 是个相比有意思的东西。BEL 用一个能够听得见的声息来吸引群众的小心,不仅能够用来Computer,也得以用来相近设备(比如打字与印刷机卡塔尔国。

    瞩目,BEL 不是声卡恐怕喇叭发出的动静,而是蜂鸣器发出的动静,首要用以报告急察方,比方硬件出现故障时就能够听到这一个声音,有的Computer操作系统平常运转也会听到那么些声音。蜂鸣器未有一向设置到主板上,而是需求连接到主板上的黄金年代种外设,现代为数不少计算机都不安装蜂鸣器了,就算输出 BEL 也听不到声音,这时候 BEL 就平素不此外意义了。

  • #### BS (8)

    BackSpace,退格键。退格键的效应,随着岁月变化,意义也变得不相同了。

    退格键最初的情致是,在打字与印刷机和电传机上,往回移动后生可畏格光标,以起到重申该字符的职能。比如你想要打字与印刷一个a,然后加上退格键后,就成了 aBS^。在机械类打字机上,此措施能够起到骨子里的重申字符的功力,然则对于新兴的 CT兰德宝马7系 下时代以来,就不也许起到对应效果了。

    近期世所用的退格键,不唯有意味着光标往回移动了意气风发格,同期也删除了运动后该岗位的字符。

  • #### HT (9)

    Horizontal Tab,水平制表符,约等于 Table/Tab 键。

    水平制表符的作用是用于布局,它调节输出设备前行到下叁个报表去处理。而制表符 Table/Tab 的宽度也是灵活不固定的,只不过在超越58%配备上制表符 Tab 都预订义为 4 个空格的肥瘦。

    水平制表符 HT 不只能压缩数额输入者的专门的学业量,对于格式化好的文字来讲,还是能够降低存储空间,因为二个Tab键,就代替了 4 个空格。

  • #### LF (10)

    Line Feed,直译为“给打字与印刷机等喂风度翩翩行”,也正是“换行”的情致。LF 是 ASCII 编码中常被误用的字符之生龙活虎。

    LF 的最原始的意义是,移动打字与印刷机的头到下大器晚成行。而除此以外一个 ASCII 字符,C汉兰达(Carriage Return卡塔尔国才是将打字与印刷机的头移到最侧面,即大器晚成行的最早(行首卡塔 尔(英语:State of Qatar)。相当多串口左券和 MS-DOS 及 Windows 操作系统,也都以如此达成的。

    而C语言和 Unix 操作系统将 LF 的意思重新定义为“新行”,即 LF 和 C奥迪Q5的三结合效应,约等于回车且换行的情致。

    从程序的角度出发,C语言和 Unix 对 LF 的定义显得愈加自然,而 MS-DOS 的落到实处更近乎于 LF 的本心。

    近来大家常将 LF 用做“新行(newline卡塔 尔(阿拉伯语:قطر‎”的效果,大非常多文本编辑软件也都足以管理单个 LF 也许 CWrangler/LF 的组成了。

  • #### VT (11)

    Vertical Tab,垂直制表符。它好像于水平制表符 Tab,指标是为了缩小布局中的工作,同一时间也收缩了格式化字符时所急需仓库储存字符的长空。VT 调整符用于跳到下叁个标识行。

    说真话,还真没看出有些地点须求用 VT,因为平时在换行的时候都是用 LF 代替 VT 了。

  • #### FF (12)

    Form Feed,换页。设计换页键,是用来支配打字与印刷机行为的。当打字与印刷机械收割到此键码的时候,打字与印刷机移动到下生机勃勃页。

    今是昨非的设施的尖峰对此决定符所表现的行为各差异,有个别会去掉显示屏,有些只是显得^L字符,有个别只是新换意气风发行而已。例如,Unix/Linux 下的 Bash Shell 和 Tcsh 就把 FF 看做是三个清空显示器的吩咐。

  • #### CR (13)

    Carriage return,回车,表示机器的滑动部分(只怕底座卡塔尔再次来到。

    C逍客回车的本心是让打字与印刷头回到右侧界,并未活动到下生机勃勃行的意味。随着年华的蹉跎,后来大家把 C纳瓦拉 的意思弄成了 Enter 键,用于暗暗提示输入完结。

    在多少以显示屏彰显的处境下,大家按下 Enter 的还要,也冀望把光标移动到下风流倜傥行,由此C语言和 Unix 重新定义了 CKoleos的含义,将其表示为移动到下黄金年代行。当输入 C福特Explorer时,系统也时临时隐式地将其转移为LF。

  • #### SO (14) 和 SI (15)

    SO,Shift Out,不用切换;SI,Shift In,启用切换。

    早在 一九六零s 时代,设计 ASCII 编码的荷兰人就早就想到了,ASCII 编码不仅能用来韩文,也要能用于外文字符集,那很关键,定义 Shift In 和 Shift Out 就是思忖到了那一点。

    最开头,其意为在西圣安东尼奥语和拉丁语之间切换。西新山语 ASCII(也即 KOI-7 编码卡塔尔国将 Shift 作为四个常备字符,而拉丁语 ASCII(相当于大家屡见不鲜所说的 ASCII卡塔尔国用 Shift 去改动打字与印刷机的书体,它们统统是二种意义。

    在拉丁语 ASCII 中,SO 用于产生双倍宽度的字符(近似于全角卡塔尔,而用 SI 打字与印刷压缩的书体(相同于半角卡塔 尔(阿拉伯语:قطر‎。

  • #### DLE (16)

    Data Link Escape,数据链路转义。

    奇迹大家必要在通讯进程中发送一些调整字符,但是总有部分情状下,那个调控字符被看成了常备的数据流,而从不起到相应的主宰功用,ASCII 编码引进 DLE 来解决那类难点。

    只要数额流中检验到了 DLE,数据接纳端会对数据流中接下去的字符另作管理。然则实际怎么处理,ASCII 标准中并未定义,只是弄了个 DLE 去封堵正常的数据流,告诉接下去的数据要特殊对待。

  • #### DC1 (17)

    Device Control 1,或者 XON – Transmission on。

    这几个 ASCII 调节符固然原先定义为 DC1, 可是后日常表示为 XON,用于串行通讯中的软件流动调查控。其着重作用为,在通讯被调控符 XOFF 中断之后,重新开端消息传输。

    用过串行终端的人应有还记得,当不常候数据出错了,按 Ctrl+Q(等价于XON卡塔尔不常候能够起到再也传输的作用。那是因为,此 Ctrl+Q 键盘连串实际上正是发生 XON 调控符,它能够将这几个由于极端只怕主机方面,由于临时现身的错误的 XOFF 调节符而中断的通讯解锁,使其健康通信。

  • #### DC3 (19)

    Device Control 3,或然 XOFF(Transmission off,传输中断卡塔 尔(阿拉伯语:قطر‎。

    #### EM (25)

    End of Medium,已到介质媒质末端,媒介物存款和储蓄已满。

    EM 用于,当数码存储到达串行存款和储蓄介质媒质末尾的时候,就好像磁带或磁头滚动到媒质末尾同样。其用于表述数据的逻辑终点,即不用非即使物理上的完毕多少载体的终极。

  • #### FS(28)

    File Separator,文件分隔符。FS 是个很好玩的调整字符,它可以让我们看出 1958s 时期的微处理机是什么组织的。

    笔者们今后习于旧贯于自由寻访一些存款和储蓄媒介物,例如 RAM、磁盘等,但是在安顿ASCII 编码的要命时代,超越一半数据依旧各类的、串行的,并不是不管三七八十后生可畏访谈的。此处所说的串行,不独有指的是串行通讯,还指的是顺序存款和储蓄媒介物,比方穿刺卡牌、纸带、磁带等。

    在串行通讯的时日,设计那样三个用以表示文件分隔的调节字符,用于私分五个单身的公文,是大器晚成件很睿智的作业。

  • #### GS(29)

    Group Separator,分组符。

    ASCII 定义调整字符的案由之生机勃勃正是考虑到了数码存款和储蓄。

    好多气象下,数据库的创立都和表有关,表包蕴了多条记下。同一个表中的全部记录归属同风流浪漫档案的次序,不相同的表中的笔录归于不一样的种类。

    而分组符 GS 正是用来分隔串行数据存款和储蓄系统中的分化的组。值得注意的是,那个时候还不曾利用 Excel 表格,ASCII 时期的人把它叫做组。

  • #### RS(30)

    Record Separator,记录分隔符,用于分隔二个组或表中的多条记下。

  • #### US(31)

    Unit Separator,单元分隔符。

    在 ASCII 定义中,数据库中所存款和储蓄的细微的数额项叫做单元(Unit卡塔尔。而今日大家称其字段(Field卡塔 尔(阿拉伯语:قطر‎。单元分隔符 US 用于私分串行数据存款和储蓄遇到下的分化单元。

    现在的数据库完毕都须要大多数品种都具有一定的尺寸,就算一时候可能用不到,不过对于每二个字段,却都要分配丰硕大的长空,用于寄放最大或然的数目。

    这种做法的流弊就是占领了大气的储存空间,而 US 调控符允许字段具备可变的长短。在 一九六〇s 时代,数据存款和储蓄空间很有限,用 US 将差异单元分隔断,能省去点不清上空。

  • #### DEL (127)

    Delete,删除。

    有人只怕会问,为啥 ASCII 编码中其余调控字符的值都极小(即 0~31卡塔尔,而 DEL 的值却非常大啊(为 127卡塔 尔(英语:State of Qatar)?

    那是出于那一个奇特的字符是为纸带而定义的。在那么些时期,绝大繁多的纸带都是用7个孔洞去编码数据的。而 127 那么些值所对应的二进制值为111 1111(全体 7 个比特位都是1卡塔尔国,将 DEL 用在现成的纸带上时,全体的洞就都被揭发了,就把早就存在的多少都擦除掉了,就起到了剔除的效率。

判断题:

C语言使用的就是 ASCII 编码,字符在蕴藏时会转变到对应的 ASCII 码值,在读取时也是依照 ASCII 码找到呼应的字符。(X卡塔尔

答:C语言一时候使用 ASCII 编码,一时候却不是,而是利用前边两节中将要讲到的 GBK 编码和 Unicode 字符集。

 

使用的模版也是寄放在在服务器上的。

3.首要代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ToolGood.Words;

namespace PinYinXiangGuan
{
    class Program
    {
        static void Main(string[] args)
        {
            while (true)
            {

                var name = Console.ReadLine();
                if (string.IsNullOrEmpty(name))
                {
                    break;
                }
                //获取汉字的首字母
                Console.WriteLine(WordsHelper.GetFirstPinYin(name));
            }

        }
    }
}

学到封装就能够想到访谈修饰符,聊到拜会修饰符,就能想到访谈品级,恐怕说是访问技艺的分寸。当然也不能缺少暗中同意的会见类型。

Program

二进制 十进制 十六进制 缩写/字符 解释
00000000 0 00 NUL (NULL) 空字符
00000001 1 01 SOH (Start Of Headling) 标题开始
00000010 2 02 STX (Start Of Text) 正文开始
00000011 3 03 ETX (End Of Text) 正文结束
00000100 4 04 EOT (End Of Transmission) 传输结束
00000101 5 05 ENQ (Enquiry) 请求
00000110 6 06 ACK (Acknowledge) 回应/响应/收到通知
00000111 7 07 BEL (Bell) 响铃
00001000 8 08 BS (Backspace) 退格
00001001 9 09 HT (Horizontal Tab) 水平制表符
00001010 10 0A LF/NL(Line Feed/New Line) 换行键
00001011 11 0B VT (Vertical Tab) 垂直制表符
00001100 12 0C FF/NP (Form Feed/New Page) 换页键
00001101 13 0D CR (Carriage Return) 回车键
00001110 14 0E SO (Shift Out) 不用切换
00001111 15 0F SI (Shift In) 启用切换
00010000 16 10 DLE (Data Link Escape) 数据链路转义
00010001 17 11 DC1/XON (Device Control 1/Transmission On) 设备控制1/传输开始
00010010 18 12 DC2 (Device Control 2) 设备控制2
00010011 19 13 DC3/XOFF (Device Control 3/Transmission Off) 设备控制3/传输中断
00010100 20 14 DC4 (Device Control 4) 设备控制4
00010101 21 15 NAK (Negative Acknowledge) 无响应/非正常响应/拒绝接收
00010110 22 16 SYN (Synchronous Idle) 同步空闲
00010111 23 17 ETB (End of Transmission Block) 传输块结束/块传输终止
00011000 24 18 CAN (Cancel) 取消
00011001 25 19 EM (End of Medium) 已到介质末端/介质存储已满/介质中断
00011010 26 1A SUB (Substitute) 替补/替换
00011011 27 1B ESC (Escape) 逃离/取消
00011100 28 1C FS (File Separator) 文件分割符
00011101 29 1D GS (Group Separator) 组分隔符/分组符
00011110 30 1E RS (Record Separator) 记录分离符
00011111 31 1F US (Unit Separator) 单元分隔符
00100000 32 20 (Space) 空格
00100001 33 21 !  
00100010 34 22 "  
00100011 35 23 #  
00100100 36 24 $  
00100101 37 25 %  
00100110 38 26 &  
00100111 39 27 '  
00101000 40 28 (  
00101001 41 29 )  
00101010 42 2A *  
00101011 43 2B +  
00101100 44 2C ,  
00101101 45 2D -  
00101110 46 2E .  
00101111 47 2F /  
00110000 48 30 0  
00110001 49 31 1  
00110010 50 32 2  
00110011 51 33 3  
00110100 52 34 4  
00110101 53 35 5  
00110110 54 36 6  
00110111 55 37 7  
00111000 56 38 8  
00111001 57 39 9  
00111010 58 3A :  
00111011 59 3B ;  
00111100 60 3C <  
00111101 61 3D =  
00111110 62 3E >  
00111111 63 3F ?  
01000000 64 40 @  
01000001 65 41 A  
01000010 66 42 B  
01000011 67 43 C  
01000100 68 44 D  
01000101 69 45 E  
01000110 70 46 F  
01000111 71 47 G  
01001000 72 48 H  
01001001 73 49 I  
01001010 74 4A J  
01001011 75 4B K  
01001100 76 4C L  
01001101 77 4D M  
01001110 78 4E N  
01001111 79 4F O  
01010000 80 50 P  
01010001 81 51 Q  
01010010 82 52 R  
01010011 83 53 S  
01010100 84 54 T  
01010101 85 55 U  
01010110 86 56 V  
01010111 87 57 W  
01011000 88 58 X  
01011001 89 59 Y  
01011010 90 5A Z  
01011011 91 5B [  
01011100 92 5C  
01011101 93 5D ]  
01011110 94 5E ^  
01011111 95 5F _  
01100000 96 60 `  
01100001 97 61 a  
01100010 98 62 b  
01100011 99 63 c  
01100100 100 64 d  
01100101 101 65 e  
01100110 102 66 f  
01100111 103 67 g  
01101000 104 68 h  
01101001 105 69 i  
01101010 106 6A j  
01101011 107 6B k  
01101100 108 6C l  
01101101 109 6D m  
01101110 110 6E n  
01101111 111 6F o  
01110000 112 70 p  
01110001 113 71 q  
01110010 114 72 r  
01110011 115 73 s  
01110100 116 74 t  
01110101 117 75 u  
01110110 118 76 v  
01110111 119 77 w  
01111000 120 78 x  
01111001 121 79 y  
01111010 122 7A z  
01111011 123 7B {  
01111100 124 7C |  
01111101 125 7D }  
01111110 126 7E ~  
01111111 127 7F DEL (Delete) 删除

可是在webservice的情况下直接调用会产出谬误 The method or operation is not supported.

4.尤为重要代码截图

龙8国际娱乐手机登入 3

Protected Internal 访谈修饰符

Protected Internal 访谈修饰符允许在本类,派生类也许隐含该类的主次集中拜见。那也被用于落到实处三回九转。   

龙8国际娱乐手机登入 4龙8国际娱乐手机登入 5

ASCII码表

 1 using DevExpress.XtraReports.UI;
 2 
 3 private static bool PrintRepx()
 4         {
 5             try
 6             {
 7                 XtraReport printTemplate = new XtraReport();
 8 
 9                 string fileName = "D:\模板.repx";
10                 DataTable dtRpt = new DataTable();
11                 dtRpt.Columns.Add("二维码", typeof(int));
12                 dtRpt.Rows.Add(1233);
13 
14                 printTemplate.LoadLayout(fileName);
15                 printTemplate.DataSource = dtRpt.DefaultView;
16                 printTemplate.CreateDocument();
17 
18                 ReportPrintTool printTool = new ReportPrintTool(printTemplate);
19                 printTool.Print();
20                 return true;
21             }
22             catch (Exception ex)
23             {
24                 return false;
25             }
26         }

5.尽管有其它好的构件推荐,迎接各位大佬补充

龙8国际娱乐手机登入 6

架空和包装是面向对象程序设计的相关本性。抽象允许相关音信可视化,封装则使开垦者落到实处所需等级的肤浅

  不带回调格局的

正文使用的DEV版本为10.1版本 

1.使用处景

  • 将汉字调换为拼音(eg:"笔者爱您"———>"WOAINI")
  • 取各种汉字的首字母(eg:"小编是中黄炎子孙"———>"WSZG讴歌ZDX")

Public(公共的) 访谈修饰符

面向对象之三大特征,基于DEV控件库的webservice打字与印刷。Public 访谈修饰符允许一个类将其成员变量和成员函数揭露给此外的函数和目的。任何国有成员能够被外表的类访问

下边是个小例子

using System;

namespace ConsoleApp1
{
    class Rectangle
    {
        public double length { get; set; }
        public double width { get; set; }

        public double Getarea()
        {
            return length * width;
        }

        public void Display()
        {
            Console.WriteLine($"长度:{length}");
            Console.WriteLine($"宽度:{width}");
            Console.WriteLine($"面积:{Getarea()}");
        }
    }




    class Program
    {
        static void Main(string[] args)
        {
            Rectangle rectangle = new Rectangle();
            rectangle.width = 55.5;
            rectangle.length = 12.32;
            rectangle.Getarea();
            rectangle.Display();
            Console.ReadKey(true);
        }
    }
}

 

当上边包车型大巴代码被编写翻译和施行时,它会发出下列结果:

长度:12.32
宽度: 55.5 
面积: 683.76

在上面的实例中,成员变量 length 和 width 被声称为 public,所以它们能够被函数 Main() 使用 Rectangle 类的实例  rectangle 访问。

分子函数 Display() 和 GetArea() 能够一贯访谈这一个变量。

分子函数 Display() 也被声称为 public,所以它也能被 Main() 使用 Rectangle 类的实例 rectangle 访问。

Program

由此改用 ReportPrintTool 进行打字与印刷。

龙8国际娱乐手机登入, 

using System;
using System.Threading;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            Task t = new Task(() =>
            {
                Console.WriteLine("任务开始工作……");
                //模拟工作过程
                Thread.Sleep(5000);
            });
            t.Start();
            t.ContinueWith((task) =>
            {
                Console.WriteLine("任务完成,完成时候的状态为:");
                Console.WriteLine("IsCanceled={0}tIsCompleted={1}tIsFaulted={2}", task.IsCanceled, task.IsCompleted, task.IsFaulted);
            });
            Console.ReadKey();
        }
    }
}

打字与印刷为webservice安顿的服务器所连接的打字与印刷机。

C# 封装依照现实的急需,设置使用者的拜望权限,并透过 会见修饰符 来实现。

Program

DevExpress.XtraReports.v10.1

  • public:全体目的都能够访谈;(公共的卡塔尔
  • private:对象自己在指标内部能够访谈;(私有的卡塔尔国
  • protected:独有该类对象及其子类对象足以访谈;(受保险的卡塔 尔(英语:State of Qatar)
  • internal:同一个顺序集的靶子足以访谈;(内部的卡塔尔国
  • protected internal:访问限于当前前后相继集或派生自富含类的花色。(内部受保障的卡塔尔
using System;
using System.Threading;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class Program
    {
        static async Task ThrowNotImplementedExceptionAsync()
        {
            throw new NotImplementedException();
        }

        static async Task ThrowInvalidOperationExceptionAsync()
        {
            throw new InvalidOperationException();
        }

        static async Task Normal()
        {
            await Fun();
        }

        static Task Fun()
        {
            return Task.Run(() =>
            {
                for (int i = 1; i <= 10; i++)
                {
                    Console.WriteLine("i={0}", i);
                    Thread.Sleep(200);
                }
            });
        }

        static async Task ObserveOneExceptionAsync()
        {
            var task1 = ThrowNotImplementedExceptionAsync();
            var task2 = ThrowInvalidOperationExceptionAsync();
            var task3 = Normal();


            try
            {
                //异步的方式
                Task allTasks = Task.WhenAll(task1, task2, task3);
                await allTasks;
                //同步的方式
                //Task.WaitAll(task1, task2, task3);
            }
            catch (NotImplementedException ex)
            {
                Console.WriteLine("task1 任务报错!");
            }
            catch (InvalidOperationException ex)
            {
                Console.WriteLine("task2 任务报错!");
            }
            catch (Exception ex)
            {
                Console.WriteLine("任务报错!");
            }

        }

        public static void Main()
        {
            Task task = ObserveOneExceptionAsync();
            Console.WriteLine("主线程继续运行........");
            task.Wait();
        }
    }
}

在winfrom的条件下 XtraReport 是足以一向调用 Print() 打字与印刷的。

Protected 访谈修饰符

Protected 访谈修饰符允许子类访谈它的基类的积极分子变量和成员函数。那样有支持完成持续。 放到延续的章节详细座谈这些。 

using System;
using System.Threading;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class Program
    {
        async static void AsyncFunction()
        {
            await Task.Delay(1);
            Console.WriteLine("使用System.Threading.Tasks.Task执行异步操作.");
            for (int i = 0; i < 10; i++)
            {
                Console.WriteLine(string.Format("AsyncFunction:i={0}", i));
            }
        }

        public static void Main()
        {
            Console.WriteLine("主线程执行业务处理.");
            AsyncFunction();
            Console.WriteLine("主线程执行其他处理");
            for (int i = 0; i < 10; i++)
            {
                Console.WriteLine(string.Format("Main:i={0}", i));
            }
            Console.ReadLine();
        }
    }
}

DevExpress.Data.v10.1

Private(私有的) 访谈修饰符

Private 访问修饰符允许三个类将其成员变量和分子函数对其余的函数和对象举行掩没。独有同一个类中的函数能够访问它的个体成员。就算是类的实例也无法访谈它的民用成员。

using System;

namespace ConsoleApp1
{
    class Rectangle
    {
        private double length { get; set; }
        private double width { get; set; }

        public void Acceptdetails()
        {
            Console.WriteLine("请输入长度:");
            length = Convert.ToDouble(Console.ReadLine());
            Console.WriteLine("请输入宽度:");
            width = Convert.ToDouble(Console.ReadLine());
        }

        public double Getarea()
        {
            return length * width;
        }

        public void Display()
        {
            Console.WriteLine($"长度:{length}");
            Console.WriteLine($"宽度:{width}");
            Console.WriteLine($"面积:{Getarea()}");
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            Rectangle rectangle = new Rectangle();
            rectangle.Getarea();
            rectangle.Display();
            Console.ReadKey(true);
        }
    }
}

在下面的实例中,成员变量 length 和 width 被声称为 private,所以它们无法被函数 Main() 访谈。

成员函数 AcceptDetails() 和 Display() 能够访谈这么些变量。

出于成员函数 AcceptDetails() 和 Display() 被声称为 public,所以它们得以被 Main() 使用 Rectangle 类的实例 rectangle 访问。

那豆蔻梢头段讲的是private 实际不是public 所以请认真看这五个访谈修饰符,小编先是次看的时候也看错了。所以请认真对待!

 

DevExpress.XtraPrinting.v10.1

封装 被定义为"把二个或八个品类密封在五个物理的也许逻辑的包中"。在面向对象程序设计方法论中,封装是为着防止对实现细节的访谈。

using System;
using System.Collections.Concurrent;
using System.Threading;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            ConcurrentStack<int> stack = new ConcurrentStack<int>();

            //t1先串行
            var t1 = Task.Factory.StartNew(() =>
            {
                stack.Push(1);
                stack.Push(2);
            });

            //t2,t3并行执行
            var t2 = t1.ContinueWith(t =>
            {
                int result;
                stack.TryPop(out result);
                Console.WriteLine("Task t2 result={0},Thread id {1}", result, Thread.CurrentThread.ManagedThreadId);
            });

            //t2,t3并行执行
            var t3 = t1.ContinueWith(t =>
            {
                int result;
                stack.TryPop(out result);
                Console.WriteLine("Task t3 result={0},Thread id {1}", result, Thread.CurrentThread.ManagedThreadId);
            });

            //等待t2和t3执行完
            Task.WaitAll(t2, t3);

            //t7串行执行
            var t4 = Task.Factory.StartNew(() =>
            {
                Console.WriteLine("当前集合元素个数:{0},Thread id {1}", stack.Count, Thread.CurrentThread.ManagedThreadId);
            });
            t4.Wait();
        }
    }
}

Internal 访问修饰符

Internal 访谈表达符允许多个类将其成员变量和分子函数暴露给当下程序中的其余函数和对象。

换句话说,带有 internal 访谈修饰符的 别的成员 能够被定义在该成员所定义的应用程序内的别样类或措施访谈。 

using System;

namespace RectangleDemo 
{
    class Rectangle
    {
        //成员变量
        internal double length;
        internal double width;

        double GetArea()
        {
            return length * width;
        }
       public void Display()
        {
            Console.WriteLine("长度: {0}", length);
            Console.WriteLine("宽度: {0}", width);
            Console.WriteLine("面积: {0}", GetArea());
        }
    }   
    class ExecuteRectangle
    {
        static void Main(string[] args)
        {
            Rectangle r = new Rectangle();
            r.length = 4.5;
            r.width = 3.5;
            r.Display();
            Console.ReadLine();
        }
    }
}

当上边的代码被编写翻译和进行时,它会爆发下列结果:

长度: 4.5
宽度: 3.5
面积: 15.75

在上边的实例中,请当心成员函数 GetArea() 注解的时候不分包此外访谈修饰符。若无一点点名访谈修饰符,则利用类成员的暗中认可访问修饰符,即为 private

Program

  1. C# 方法暗中认可访谈品级 : private (私有的卡塔 尔(阿拉伯语:قطر‎ 
  2. C# 类暗许访谈级别 : internal    (内部的卡塔 尔(阿拉伯语:قطر‎ 

    async/await的实现:

一个 访谈修饰符 定义了三个类成员的界定和可以预知性。C# 扶持的拜望修饰符如下所示:

龙8国际娱乐手机登入 7龙8国际娱乐手机登入 8

程式集:IL+元数据

本文由long8发布于long8,转载请注明出处:面向对象之三大特征,基于DEV控件库的webservice打

上一篇:没有了 下一篇:没有了
猜你喜欢
热门排行
精彩图文