ایران سرفراز- نرم افزار وپروژهای دانشجویی


نرم افزار وپروژهای دانشجویی

فصل دوازدهم کاربرد اندیس گذارها# C

<!-- /* Font Definitions */ @font-face {font-family:"Cambria Math"; panose-1:2 4 5 3 5 4 6 3 2 4; mso-font-charset:0; mso-generic-font-family:roman; mso-font-pitch:variable; mso-font-signature:-1610611985 1107304683 0 0 159 0;} @font-face {font-family:Calibri; panose-1:2 15 5 2 2 2 4 3 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:-1610611985 1073750139 0 0 159 0;} @font-face {font-family:Tahoma; panose-1:2 11 6 4 3 5 4 4 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:1627400839 -2147483648 8 0 66047 0;} @font-face {font-family:"Segoe UI"; panose-1:2 11 5 2 4 2 4 2 2 3; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:-536861953 -1073733541 9 0 479 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-priority:1; mso-style-unhide:no; mso-style-qformat:yes; mso-style-parent:""; margin-top:0cm; margin-right:0cm; margin-bottom:10.0pt; margin-left:0cm; mso-pagination:widow-orphan; font-size:11.0pt; mso-bidi-font-size:10.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:Arial; mso-bidi-theme-font:minor-bidi;} h1 {mso-style-priority:5; mso-style-unhide:no; mso-style-qformat:yes; mso-style-link:"Heading 1 Char"; mso-style-next:Normal; margin-top:10.0pt; margin-right:0cm; margin-bottom:0cm; margin-left:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; mso-outline-level:1; font-size:15.0pt; mso-bidi-font-size:18.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:major-latin; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:major-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:major-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:major-bidi; color:#17365D; mso-themecolor:text2; mso-themeshade:191; mso-font-kerning:0pt; font-weight:bold;} h2 {mso-style-priority:6; mso-style-unhide:no; mso-style-qformat:yes; mso-style-link:"Heading 2 Char"; mso-style-next:Normal; margin-top:10.0pt; margin-right:0cm; margin-bottom:0cm; margin-left:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; mso-outline-level:2; font-size:13.0pt; mso-bidi-font-size:16.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:major-latin; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:major-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:major-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:major-bidi; color:#17365D; mso-themecolor:text2; mso-themeshade:191; font-weight:bold;} h3 {mso-style-priority:7; mso-style-unhide:no; mso-style-qformat:yes; mso-style-link:"Heading 3 Char"; mso-style-next:Normal; margin-top:10.0pt; margin-right:0cm; margin-bottom:0cm; margin-left:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; mso-outline-level:3; font-size:11.0pt; mso-bidi-font-size:14.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:major-latin; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:major-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:major-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:major-bidi; color:#17365D; mso-themecolor:text2; mso-themeshade:191; font-weight:bold;} h4 {mso-style-priority:8; mso-style-unhide:no; mso-style-qformat:yes; mso-style-link:"Heading 4 Char"; mso-style-next:Normal; margin-top:10.0pt; margin-right:0cm; margin-bottom:0cm; margin-left:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; mso-outline-level:4; font-size:11.0pt; mso-bidi-font-size:14.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:major-latin; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:major-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:major-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:major-bidi; color:#17365D; mso-themecolor:text2; mso-themeshade:191; font-weight:normal;} h5 {mso-style-priority:9; mso-style-unhide:no; mso-style-qformat:yes; mso-style-link:"Heading 5 Char"; mso-style-next:Normal; margin-top:10.0pt; margin-right:0cm; margin-bottom:0cm; margin-left:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; mso-outline-level:5; font-size:11.0pt; mso-bidi-font-size:14.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:major-latin; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:major-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:major-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:major-bidi; color:#17365D; mso-themecolor:text2; mso-themeshade:191; font-weight:normal; font-style:italic;} h6 {mso-style-priority:10; mso-style-unhide:no; mso-style-qformat:yes; mso-style-link:"Heading 6 Char"; mso-style-next:Normal; margin-top:10.0pt; margin-right:0cm; margin-bottom:0cm; margin-left:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; mso-outline-level:6; font-size:10.0pt; mso-bidi-font-size:13.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:major-latin; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:major-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:major-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:major-bidi; color:#17365D; mso-themecolor:text2; mso-themeshade:191; font-weight:bold;} p {mso-style-priority:1; mso-style-unhide:no; margin-top:0cm; margin-right:0cm; margin-bottom:10.0pt; margin-left:0cm; mso-pagination:widow-orphan; font-size:11.0pt; mso-bidi-font-size:10.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:Arial; mso-bidi-theme-font:minor-bidi;} p.MsoAcetate, li.MsoAcetate, div.MsoAcetate {mso-style-noshow:yes; mso-style-priority:99; mso-style-unhide:no; mso-style-link:"Balloon Text Char"; margin:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:8.0pt; font-family:"Tahoma","sans-serif"; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:minor-fareast;} span.MsoPlaceholderText {mso-style-noshow:yes; mso-style-priority:99; mso-style-unhide:no; color:gray;} p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph {mso-style-priority:34; mso-style-unhide:no; mso-style-qformat:yes; margin-top:0cm; margin-right:0cm; margin-bottom:10.0pt; margin-left:36.0pt; mso-add-space:auto; mso-pagination:widow-orphan; font-size:11.0pt; mso-bidi-font-size:10.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:Arial; mso-bidi-theme-font:minor-bidi;} p.MsoListParagraphCxSpFirst, li.MsoListParagraphCxSpFirst, div.MsoListParagraphCxSpFirst {mso-style-priority:34; mso-style-unhide:no; mso-style-qformat:yes; mso-style-type:export-only; margin-top:0cm; margin-right:0cm; margin-bottom:0cm; margin-left:36.0pt; margin-bottom:.0001pt; mso-add-space:auto; mso-pagination:widow-orphan; font-size:11.0pt; mso-bidi-font-size:10.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:Arial; mso-bidi-theme-font:minor-bidi;} p.MsoListParagraphCxSpMiddle, li.MsoListParagraphCxSpMiddle, div.MsoListParagraphCxSpMiddle {mso-style-priority:34; mso-style-unhide:no; mso-style-qformat:yes; mso-style-type:export-only; margin-top:0cm; margin-right:0cm; margin-bottom:0cm; margin-left:36.0pt; margin-bottom:.0001pt; mso-add-space:auto; mso-pagination:widow-orphan; font-size:11.0pt; mso-bidi-font-size:10.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:Arial; mso-bidi-theme-font:minor-bidi;} p.MsoListParagraphCxSpLast, li.MsoListParagraphCxSpLast, div.MsoListParagraphCxSpLast {mso-style-priority:34; mso-style-unhide:no; mso-style-qformat:yes; mso-style-type:export-only; margin-top:0cm; margin-right:0cm; margin-bottom:10.0pt; margin-left:36.0pt; mso-add-space:auto; mso-pagination:widow-orphan; font-size:11.0pt; mso-bidi-font-size:10.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:Arial; mso-bidi-theme-font:minor-bidi;} p.MsoQuote, li.MsoQuote, div.MsoQuote {mso-style-priority:1; mso-style-unhide:no; mso-style-qformat:yes; mso-style-link:"Quote Char"; mso-style-next:Normal; margin-top:0cm; margin-right:36.0pt; margin-bottom:10.0pt; margin-left:36.0pt; mso-pagination:widow-orphan; font-size:11.0pt; mso-bidi-font-size:10.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:Arial; mso-bidi-theme-font:minor-bidi; color:black; mso-themecolor:text1;} span.Heading1Char {mso-style-name:"Heading 1 Char"; mso-style-priority:5; mso-style-unhide:no; mso-style-locked:yes; mso-style-link:"Heading 1"; mso-ansi-font-size:15.0pt; mso-bidi-font-size:18.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:major-latin; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:major-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:major-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:major-bidi; color:#17365D; mso-themecolor:text2; mso-themeshade:191; font-weight:bold;} span.Heading2Char {mso-style-name:"Heading 2 Char"; mso-style-priority:6; mso-style-unhide:no; mso-style-locked:yes; mso-style-link:"Heading 2"; mso-ansi-font-size:13.0pt; mso-bidi-font-size:16.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:major-latin; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:major-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:major-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:major-bidi; color:#17365D; mso-themecolor:text2; mso-themeshade:191; font-weight:bold;} span.Heading3Char {mso-style-name:"Heading 3 Char"; mso-style-priority:7; mso-style-unhide:no; mso-style-locked:yes; mso-style-link:"Heading 3"; mso-bidi-font-size:14.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:major-latin; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:major-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:major-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:major-bidi; color:#17365D; mso-themecolor:text2; mso-themeshade:191; font-weight:bold;} span.Heading4Char {mso-style-name:"Heading 4 Char"; mso-style-priority:8; mso-style-unhide:no; mso-style-locked:yes; mso-style-link:"Heading 4"; mso-bidi-font-size:14.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:major-latin; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:major-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:major-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:major-bidi; color:#17365D; mso-themecolor:text2; mso-themeshade:191;} span.Heading5Char {mso-style-name:"Heading 5 Char"; mso-style-priority:9; mso-style-unhide:no; mso-style-locked:yes; mso-style-link:"Heading 5"; mso-bidi-font-size:14.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:major-latin; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:major-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:major-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:major-bidi; color:#17365D; mso-themecolor:text2; mso-themeshade:191; font-style:italic;} span.Heading6Char {mso-style-name:"Heading 6 Char"; mso-style-priority:10; mso-style-unhide:no; mso-style-locked:yes; mso-style-link:"Heading 6"; mso-ansi-font-size:10.0pt; mso-bidi-font-size:13.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:major-latin; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:major-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:major-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:major-bidi; color:#17365D; mso-themecolor:text2; mso-themeshade:191; font-weight:bold;} p.Publishwithline, li.Publishwithline, div.Publishwithline {mso-style-name:"Publish with line"; mso-style-noshow:yes; mso-style-unhide:no; mso-style-qformat:yes; mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:16.0pt; mso-bidi-font-size:19.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:major-latin; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:major-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:major-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:major-bidi; color:#17365D; mso-themecolor:text2; mso-themeshade:191; font-weight:bold;} p.PublishStatus, li.PublishStatus, div.PublishStatus {mso-style-name:"Publish Status"; mso-style-noshow:yes; mso-style-unhide:no; margin-top:6.0pt; margin-right:0cm; margin-bottom:2.0pt; margin-left:0cm; mso-pagination:widow-orphan; background:#FDEB9F; border:none; mso-border-alt:solid #FDBD5E .5pt; padding:0cm; mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt; font-size:9.0pt; mso-bidi-font-size:13.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:Arial; mso-bidi-theme-font:minor-bidi;} p.PublishStatusAccessible, li.PublishStatusAccessible, div.PublishStatusAccessible {mso-style-name:PublishStatus_Accessible; mso-style-noshow:yes; mso-style-unhide:no; margin-top:6.0pt; margin-right:0cm; margin-bottom:2.0pt; margin-left:0cm; mso-pagination:widow-orphan; border:none; mso-border-alt:solid #FDBD5E .5pt; padding:0cm; mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt; font-size:9.0pt; mso-bidi-font-size:13.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:Arial; mso-bidi-theme-font:minor-bidi;} p.Account, li.Account, div.Account {mso-style-name:Account; mso-style-noshow:yes; mso-style-unhide:no; mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; tab-stops:3.6pt 63.35pt; font-size:9.0pt; mso-bidi-font-size:12.0pt; font-family:"Segoe UI","sans-serif"; mso-fareast-font-family:"Segoe UI"; color:#4F81BD;} p.Categories, li.Categories, div.Categories {mso-style-name:Categories; mso-style-noshow:yes; mso-style-unhide:no; mso-style-parent:Account; margin:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; tab-stops:3.6pt 63.35pt; font-size:9.0pt; mso-bidi-font-size:12.0pt; font-family:"Segoe UI","sans-serif"; mso-fareast-font-family:"Segoe UI"; color:#4F81BD;} p.PadderBetweenTitleandProperties, li.PadderBetweenTitleandProperties, div.PadderBetweenTitleandProperties {mso-style-name:"Padder Between Title and Properties"; mso-style-noshow:yes; mso-style-unhide:no; margin-top:0cm; margin-right:0cm; margin-bottom:1.0pt; margin-left:0cm; mso-pagination:widow-orphan; font-size:1.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:Arial; mso-bidi-theme-font:minor-bidi;} p.PadderBetweenControlandBody, li.PadderBetweenControlandBody, div.PadderBetweenControlandBody {mso-style-name:"Padder Between Control and Body"; mso-style-noshow:yes; mso-style-unhide:no; mso-style-next:Normal; margin-top:0cm; margin-right:0cm; margin-bottom:6.0pt; margin-left:0cm; mso-pagination:widow-orphan; font-size:1.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:Arial; mso-bidi-theme-font:minor-bidi;} p.underline, li.underline, div.underline {mso-style-name:underline; mso-style-noshow:yes; mso-style-unhide:no; mso-style-parent:""; margin-top:2.0pt; margin-right:0cm; margin-bottom:0cm; margin-left:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; border:none; mso-border-bottom-alt:solid #4F81BD 1.0pt; mso-border-bottom-themecolor:accent1; padding:0cm; mso-padding-alt:0cm 0cm 2.0pt 0cm; font-size:1.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:Arial; mso-bidi-theme-font:minor-bidi;} span.QuoteChar {mso-style-name:"Quote Char"; mso-style-priority:1; mso-style-unhide:no; mso-style-locked:yes; mso-style-link:Quote; color:black; mso-themecolor:text1;} span.BalloonTextChar {mso-style-name:"Balloon Text Char"; mso-style-noshow:yes; mso-style-priority:99; mso-style-unhide:no; mso-style-locked:yes; mso-style-link:"Balloon Text"; mso-ansi-font-size:8.0pt; mso-bidi-font-size:8.0pt; font-family:"Tahoma","sans-serif"; mso-ascii-font-family:Tahoma; mso-hansi-font-family:Tahoma; mso-bidi-font-family:Tahoma;} .MsoChpDefault {mso-style-type:export-only; mso-default-props:yes; mso-bidi-font-size:10.0pt; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:Arial; mso-bidi-theme-font:minor-bidi;} .MsoPapDefault {mso-style-type:export-only; margin-bottom:10.0pt;} @page Section1 {size:612.0pt 792.0pt; margin:72.0pt 72.0pt 72.0pt 72.0pt; mso-header-margin:36.0pt; mso-footer-margin:36.0pt; mso-paper-source:0;} div.Section1 {page:Section1;} -->

[Enter Post Title Here]

 

 

 Nohsen_mahyar@yahoo.com

فصل دوازدهم

 

C#کاربرد اندیس گذارها

بعد از این فصل خواهید توانست:

- گون اعلانهای آرایه را با استفاده از اندیسگذارها کپسوله کنید.

کنترل کنید. get - دسترسی خواندن اندیسگذارها را بوسیله اعلان

کنترل کنید. set - دسترسی نوشتن به اندیسگذارها را بوسیله اعلان

- واسطهایی که اندیسگذارها را اعلان میکنند، ایجاد کنید.

- اندیسگذارها را در ساختارها و کلاسهایی که از واسطها ارثبری میکنند، پیادهسازی کنید.

-1-12 اندیسگذار

همانند خصوصیت که یک فیلد هوشمند است، اندی س گذار یک آرای ه ی هوشمند اس ت . نحوهی کاربرد یک اندی س گذار دقیقا شبیه کاربرد

یک آرایه هس ت . ابتدا یک مثال را بدون کمک از اندی س گذارها بررسی م ی کنیم. سپس همان مساله با یک راه حل بهتر به کمک

اندیسگذارها بررسی میگردد.

-1 مثال بدون کاربرد اندیسگذار -1-12

به طور معمول یک نوع داده صحیح را برای نگه داشتن یک مقدار صحیح به کار م ی برید. یک نوع داده صحیح مقدارش را به صورت یک

دنبالهی 32 بیتی ذخیره می کند، که هر بیت میتواند صفر یا یک باشد. در بیشتر مواقع به این نمایش داخلی دقت نمیکنید . یک نوع

داده صحیح را فقط به عنوان یک سطل برای نگ ه داشتن یک مقدار صحیح به کار م ی برید. با این وجود، بعضی مواقع نوع داده صحیح برای

اهداف دیگر استفاده م ی شود. بعضی از برنام ه ها تک به تک بیتهای یک داده صحیح را دستکاری میکنند. به عبارت دیگر احتمال دارد

یک برنامه عدد صحیح را برای نگهداری 32 بیت به کار برد، نه به این دلیل که آن میتواند یک عدد صحیح را نشان دهد.

توجه: برخی از برنام ه های قدیمی انواع داده صحیح را برای ذخیره حافظه به کار م ی برند. یک مقدار صحیح منفرد 32 بیت نگه م ی دارد،

false و 0 را برای مشخ ص کردن مقدار ،true که هر کدام م ی توانند 0یا 1 باشند . در برخی موارد 1 را برای مشخ ص کردن مقدار

تخصیص می دهند و نوع داده صحیح را به صورت مجموع ه ای از مقادیر بولین در نظر م ی گیرند. به عنوان مثال، عبارت زیر عملگرهای

بکار میرود. bits بیتی << و& را برای مشخصکردن 1 یا 0 بودن بیت اندیس 6 در متغیر

(bits & (١ << ۶)) != ٠

فصل دوازدهم-اندیسگذارها

173

ارزیابی م ی شود. این یک true ارزیابی م ی شود و اگریک باشد، مقدار آن با false اگر بیت اندیس 6 صفر باشد، مقدار این عبارت با

عبارت پیچیده است، اما در مقایسه با عبارت زیر که مقدار بیت اندیس 6را 0 قرار میدهد، ساده است.

bits &= ~(١ << ۶)

عبارت زیرمقدار بیت اندیس 6 را 1 قرار میدهد.

bits |= (١ << ۶)

مشکل این مثالها این است:

اگرچه آنها کار م ی کنند، اما مشخص و واضح نیست که چرا و چگونه کار م ی کنند. آنها پیچیده هستند و راه حل آنها بسیار س  طح پائین

است و حالت انتزاعی مساله را از بین میبرند.

-2 کاربرد اندیسگذارها در مثال قبلی -1-12

دراینجا می خواهیم یک نوع داده صحیح را نه به صورت یک مقدار صحیح بلکه به صورت یک آرای ه ی 32 بیتی به کار بری م . بنابراین

یک نوع صحیح باشد، برای bits به صورت یک آرایهی 32 بیتی اس ت . به عبارت دیگر اگر int بهترین راه حل این مسئله کاربرد

دسترسی به بیت اندیس 6 خواهیم نوشت :

bits[۶]

در بیت اندیس 6 آن خواهیم نوشت true و به عنوان مثال برای نوشتن مقدار

bits[۶] = true

متاسفانه نمی توانیم علامت کروش ه ها را روی یک عدد صحیح استفاد ه کنیم . آن فقط بر روی یک آرایه یا روی یک نوع داده شبیه آرایه

کار می کند. اندیسگذار یک نمونه از آن اس ت . بنابراین راهحل مسئله این است که یک نوع داده جدید شبیه آرایه ایجاد کنیم، تا شبیه

IntBits عمل کن د . اما بوسیله یک نوع داده صحیح پیاد ه ساز ی م ی شود . این نوع داده جدید را bool یک آرایه از متغیرها ی

به صورت یک آرایه از IntBits یک مقدار صحیح را در بر خواهد گرفت، اما هدف ما استفاده از IntBits. نامگذاری کنید

خواهد بود. bool متغیرهای

نکته

کوچک و سبک وزن است ترجیح میدهیم آن را به جای کلاس یک ساختار تعریف کنیم. IntBit چون

struct IntBits

{

public IntBits(int initialBitValue)

{

bits = initialBitValue;

}

// indexer to be written here

private int bits;

}

شبیه زیر IntBits برای تعریف یک اندی س گذار، یک علامتی بکار م ی برید که به یک خصوصیت آرای ه ای شباهت دار د . اندیسگذار

است:

struct IntBits

{

...

public bool this [ int index ]

{

get

{

return (bits & (١ << index)) != ٠;

}

set

{

if (value) // Turn the bit on if value is true, otherwise turn it off

#C برنامهنویسی

174

bits |= (١ << index);

else

bits &= ~(١ << index);

}

}

...

}

به موارد زیر توجه کنید:

اندیسگذار یک متد نیست و به جای پرانتز از کروشه استفاده میکند.

یک اندیس گذار همواره یک آرگومان منفرد م ی گیرد که مابین [ ] قرار م ی گیرد. این آرگومان عنصر مورد نظر جهت دستیابی را

مشخص میکند.

را بجای نام متد به کار م ی برند. یک کلاس یا ساختار فقط م ی تواند یک اندیس گذار تعریف this • همهی اندیس گذارها کلمه کلید ی

های مختلفی تعریف کرد. overload نامگذاری میشود. البته میتوان از آن اندیسگذار this کند و آن همیشه با

عبارتهای بیتی مثال قبلی را get و set را شبیه خصوصیات در بر دارن د . معاون های get و set • اندیسگذارها معاون های

پیادهسازی کردهاند..

set وget • آرگومان مشخص شده در اعلان اندی س گذارها با مقدار اندیس مشخص شده در هنگام فراخوانی پر م ی شود. معاونهای

میتوانند این آرگومان را برای تعیین عنصر مورد نظر بخوانند.

توجه:برای جلوگیری از وقوع هر استثنا در داخل کد ا ندیسگذار، یک کنترل کنندهی محدوده برای مقدار اندیس در نظر

بگیرید.

را به جای یک عدد صحیح بکار ببریم و علام ت [ ] را در صورت نیاز به IntBits میتوانیم بعد از اعلان اندی س گذار، یک متغیر از نوع

آن اعمال کنیم.

int adapted = ۶٣;

IntBits bits = new IntBits(adapted);

bool peek = bits[۶]; // retrieve bool at index ۶

bits[٠] = true; // set the bit at index ٠ to true

bits[٣١] = false; // set the bit at index ٣١ to false

در اندی سگذارها و خصوصی تها بطور مشابه بکار می رون د. اندی سگذارها شبیه یک set و get توجه:معاونهای

static مجاز است، اما کاربرد اندی سگذا ر static خصوصیت چند مقداری هستن د. اگرچه تعریف خصوصیا ت

نامعقول است.

استفاده م ی شوند . به get,set کاربرد اندیس گذارها در عبارات خواند ن /نوشتن ترکیبی 1 امکان پذیر است . در این مورد معاو ن های

عنوان مثال دستور زیر را ملاحظه فرمائید

bits[۶] ^= true;

این دستور بطور اتوماتیک بصورت زیر ترجمه میشود

bits[۶] = bits[۶] ^ true;

دارد، مجاز است. set یا معاون get توجه: اعلان اندیسگذاری که فقط معاون

-2-12 مقایسه آرایهها واندیسگذارها

زمانی که یک اندی س گذار به کار م ی برید، از نظر نحوی شبی ه آرایه اس ت . با این وجود، تفاو ت های مهمی مابین اندی س گذارها و آرای ه ها

وجود دارد.

1 Combined

فصل دوازدهم-اندیسگذارها

175

اندیسگذارها میتوانند اندیسهای غیرعددی بکار برند، در حالیکه آرایهها فقط میتوانند اندیسهای صحیح بکار برند.

public int this [ string name ] { ... } // okay

که از زوج مرت ب های (مقدار/ کلید)تشکیل شده است، برای اضاف ه کردن یک مقدار جدید، به جای HashTable نکته: کلاس

میتواند از روشی شبیه اندیسگذار استفاده کند. Add استفاده از متد

Hashtable ages = new Hashtable();

ages.Add("John", ۴١);

میتوانید کد زیر را بنویسید:

Hashtable ages = new Hashtable();

ages["John"] = ۴١;

شوند، ولی آرایهها نمیتوانند. OverLoad • اندیسگذارها شبیه متدها میتوانند

public Name this [ PhoneNumber number ] { ... }

public PhoneNumber this [ Name name ] { ... }

بکار روند، ولی عناصر آرایه میتوانند. out یا ref • اندیسگذارها نمیتوانند همانند پارامترهای

IntBits bits; // bits contains an indexer

Method(ref bits[١]); // compile-time error

-3-12 خصوصیات آرایهها و اندیسگذارها

برگرداندن یک آرایه برای یک خصوصیت ممکن است، اما به خاطر داشته باشید که آرای ه ها از نوع داد ه های ارجاعی هستند. پس نمایش

داده یک آرایه بصورت یک خصوصیت م ی تواند رونویسی حجم زیادی از داد ه ها را بطور تصادفی ممکن ساز د . ساختار زیر یک خصوصیت

را نمایش میدهد. Data آرایهای بنام

struct Wrapper

{

int[] data;

...

public int[] Data

{

get { return this.data; }

set { this.data = value; }

}

}

کد زیر نحوهی استفاده از این خصوصیت را نشان میدهد

Wrapper wrap = new Wrapper();

...

int[] myData = wrap.Data;

myData[٠]++;

myData[١]++;

ولی برای دسترسی به تک تک عناصر آرایه میتوانیم اندیسگذار را بصورت زیر ایجاد کنیم:

struct Wrapper

{

int[] data;

...

public int this [int i]

{

get

{

#C برنامه نویسی

176

return this.data[i];

}

set

{

this.data[i] = value;

}

}

}

کد زیر اندیسگذار را در روشی مشابه یک خصوصیت بکار میبرد.

Wrapper wrap = new Wrapper();

...

int[] myData = new int[٢];

myData[٠] = wrap[٠];

myData[١] = wrap[١];

myData[٠]++;

myData[١]++;

ندارد. اگر بخواهید واقعا مقدار داده در ش ی Wrapper هیچ تاثیری روی آرایه اصلی در شی myData در این حالت تغییر مقدار آرایه

را تغییر دهید، دستوری شبیه زیر بنویسید: wrapper

wrap[٠]++;

-4-12 اندیسگذارها در واسطها

را مشخص کنی د . اما بدنه set,get در یک واسط فقط م ی توانید اندیس گذارها را اعلان کنی د . برای انجام این کار کلمات کلیدی

را با ; جایگزین کنید. هر کلاس یا ساختاری که واسط را پیادهسازی میکند، باید اندیسگذارهای اعلان شده در set,get معاونهای

واسط را نیز پیادهسازی کند. به عنوان مثال:

interface IRawInt

{

bool this [ int index ] { get; set; }

}

struct RawInt : IRawInt

{

...

public bool this [ int index ]

{

get { ... }

set { ... }

}

...

}

اگر یک واسط، اندی س گذاری را در یک کلاس پیاد ه سازی می کند، می توانید پیادهسازیهای اندیس گذار را بصورت مجازی اعلان کنی د .

کنند. به عنوان مثال: Override را get,set این عمل به کلاسهای مشتق شده اجازه میدهد، معاونهای

class RawInt : IRawInt

{

...

public virtual bool this [ int index ]

{

get { ... }

set { ... }

}

...

}

همچنین میتوانید یک اندیسگذار را بوسیله گرامر پیادهسازی صریح، پیادهسازی کنید. برای مثال:

struct RawInt : IRawInt

{

...

bool IRawInt.this [ int index ]

فصل دوازدهم-اندیسگذارها

177

{

get { ... }

set { ... }

}

...

}

-5-12 خلاصه

، اندیسگذار یک آرایهی هوشمند است. نحوهی کاربرد یک اندیسگذار دقیقا شبیه کاربرد یک آرایه هست.

یک نوع داده صحیح مقدارش را به صورت یک دنبالهی 32 بیتی ذخیره میکند، که هر بیت میتواند صفر یا یک باشد.

. بعضی از برنامهها تک به تک بیتهای یک داده صحیح را دستکاری میکنند.

نمیتوانیم علامت کروشهها را روی یک عدد صحیح استفاده کنیم. آن فقط بر روی یک آرایه یا روی یک نوع داده شبیه آرایه

کار میکند. اندیسگذار یک نمونه از آن است.

اندیسگذار یک متد نیست و به جای پرانتز از کروشه استفاده میکند.

یک اندیسگذار همواره یک آرگومان منفرد میگیرد که مابین [ ] قرار میگیرد.

کاربرد اندیسگذارها در عبارات خواندن/نوشتن ترکیبی 1 امکانپذیر است.

اندیسگذارها میتوانند اندیسهای غیرعددی بکار برند، در حالیکه آرایهها فقط میتوانند اندیسهای صحیح بکار برند.

را مشخص کنید. اما set,get • در یک واسط فقط میتوانید اندیسگذارها را اعلان کنید. برای انجام این کار کلمات کلیدی

را با ; جایگزین کنید. set,get بدنه معاونهای

1 Combined

   + MOHSEN GHASEMI - ۱۱:٢٦ ‎ب.ظ ; ۱۳۸٩/٤/۱٢