Dize ve C# 'daki string aras─▒ndaki fark nedir?


Al─▒nan cevaba git


├ľrnek (duruma dikkat edin ):

 string s = "Hello world!";
String s = "Hello world!";
 

Her birinin kullan─▒m─▒yla ilgili kurallar nelerdir ? Ve farkl─▒l─▒klar nelerdir?


6175









Cevap say─▒s─▒n─▒ say: 30






string C # i├žin bir di─čer add─▒r System.String .
Yani teknik olarak, hi├žbir fark yoktur. Sanki int vs. System.Int32 .

Kurallara gelince, genellikle string bir nesneye at─▒fta bulundu─čunuz herhangi bir zamanda kullan─▒lmas─▒ ├Ânerilir .

├ľrne─čin

 string place = "world";
 

Ayn─▒ ┼čekilde, String ├Âzellikle de s─▒n─▒fa ba┼čvurman─▒z gerekti─činde, genellikle kullan─▒lmas─▒ ├Ânerilir .

├ľrne─čin

 string greet = String.Format("Hello {0}!", place);
 

Microsoft , ├Ârneklerinde kullanmaya meyillidir .

StyleCop art─▒k C # ├Âzel takma adlar─▒n kullan─▒lmas─▒n─▒ zorlad─▒─č─▒ndan , bu alandaki rehberli─čin de─či┼čmi┼č olabilece─či anla┼č─▒l─▒yor .


5802







Sadece b├╝t├╝nl├╝k u─čruna, i┼čte bunlarla ilgili bir bilgi d├Âk├╝m├╝ ...

Di─čerlerinin de belirtti─či gibi string bir takma add─▒r System.String . Ayn─▒ kodu derlerler, bu nedenle y├╝r├╝tme s─▒ras─▒nda hi├žbir fark yoktur. Bu, C # 'daki di─čer adlardan sadece bir tanesidir. Tam liste:

 object:  System.Object
string:  System.String
bool:    System.Boolean
byte:    System.Byte
sbyte:   System.SByte
short:   System.Int16
ushort:  System.UInt16
int:     System.Int32
uint:    System.UInt32
long:    System.Int64
ulong:   System.UInt64
float:   System.Single
double:  System.Double
decimal: System.Decimal
char:    System.Char
 

Bunun d─▒┼č─▒nda string ve object di─čer adlar─▒n t├╝m├╝ de─čer t├╝rlerine aittir. decimal bir de─čer t├╝r├╝d├╝r, ancak CLR'deki ilkel bir t├╝r de─čildir. Takma ad─▒ olmayan ilkel t├╝r System.IntPtr .

Spesifikasyonda, de─čer tipi takma adlar─▒ "basit t├╝rler" olarak bilinir. De─či┼čmezler, her basit tipteki sabit de─čerler i├žin kullan─▒labilir; Ba┼čka hi├žbir de─čer t├╝r├╝n├╝n ger├žek formlar─▒ yoktur. (Bunu DateTime de─či┼čmezlere izin veren ve bunun i├žin bir di─čer ad─▒ olan VB ile kar┼č─▒la┼čt─▒r─▒n .)

Takma ad─▒ kullanman─▒z gereken bir durum vard─▒r : a├ž─▒k├ža bir enumun temel tipini belirlerken. ├ľrne─čin:

 public enum Foo : UInt32 {} // Invalid
public enum Bar : uint   {} // Valid
 

Bu ┼čekilde meselesi Spec tan─▒mlar enum bildirimleri var - kolon sonra par├žas─▒ olmak zorunda ayr─▒lmaz tipi bir belirte├ž olan ├╝retim, sbyte , byte , short , ushort , int , uint , long , ulong , char ... bir kar┼č─▒t olarak tip ├╝retim olarak ├ľrne─čin de─či┼čken bildirimler taraf─▒ndan kullan─▒l─▒r. Ba┼čka bir fark g├Âstermiyor.

Son olarak, kullan─▒lacak olan konu: ki┼čisel olarak, uygulama i├žin her yerde takma ad─▒ kullan─▒yorum, ancak herhangi bir API i├žin CLR t├╝r├╝n├╝ kullan─▒yorum. Uygulama a├ž─▒s─▒ndan kulland─▒─č─▒n─▒z ├žok fazla ├Ânemli de─čil - ekibiniz aras─▒ndaki tutarl─▒l─▒k g├╝zel, ama ba┼čka hi├ž kimse umursam─▒yor. ├ľte yandan, bir API'deki bir t├╝rden bahsederseniz, bunu tarafs─▒z bir dilde yapman─▒z ger├žekten ├Ânemlidir. ├ça─čr─▒lan bir y├Ântem ReadInt32 a├ž─▒k de─čildir, oysa ├ža─čr─▒lan bir y├Ântem ReadInt yorum gerektirir. Arayan , ├Ârne─čin bir int takma ad─▒ tan─▒mlayan bir dil kullan─▒yor olabilir Int16 . .NET framework tasar─▒mc─▒lar─▒, bu deseni izlemi┼čtir iyi ├Ârnekler olmak BitConverter , BinaryReader ve Convert s─▒n─▒flar.


3318







String anlam─▒na gelir System.String ve bir .NET Framework t├╝r├╝d├╝r. C # dilinde string bir di─čer add─▒r System.String . Her ikisi de System.String IL'de (Orta Dil) derlenmi┼čtir , dolay─▒s─▒yla hi├žbir fark yoktur. Neyi sevdi─činizi se├žin ve kullan─▒n. C # kodlarsan─▒z string , C # tipi takma ad─▒ olarak ve C # programc─▒lar─▒ taraf─▒ndan iyi bilinmesini tercih ederim .

Ayn─▒ ( int , System.Int32 ) vb hakk─▒nda s├Âyleyebilirim .


684







C # ile verilen t├╝r di─čer adlar─▒n─▒ kullanma konusunda duydu─čum en iyi cevap CLR Via C # adl─▒ kitab─▒ndaki Jeffrey Richter'den geliyor . ─░┼čte onun 3 nedeni:

  • Baz─▒ geli┼čtiricilerin kafas─▒n─▒n kar─▒┼čt─▒─č─▒n─▒, kodlar─▒nda string veya string kullan─▒l─▒p kullan─▒lmayaca─č─▒n─▒ bilmeden kar─▒┼čt─▒─č─▒n─▒ g├Ârd├╝m . C # 'da dize (anahtar kelime) tam olarak System.String (bir FCL tipi) ile e┼čle┼čti─činden, hi├žbir fark yoktur ve her ikisi de kullan─▒labilir.
  • C # 'de uzun , System.Int64 ile e┼čle┼čir , ancak farkl─▒ bir programlama dilinde, uzun bir Int16 veya Int32 ile e┼členebilir . Asl─▒nda, C ++ / CLI asl─▒nda bir Int32 oldu─ču s├╝rece b├Âyle davran─▒r . Kaynak kodu bir dilde okuyan bir ki┼či, farkl─▒ bir programlama dilinde programlamaya al─▒┼čm─▒┼čsa, kodun amac─▒n─▒ kolayca yanl─▒┼č yorumlayabilir. Asl─▒nda, ├žo─ču dil bir anahtar kelime olarak bile uzun s├╝re i┼člemez ve onu kullanan kodu derlemez.
  • FCL, t├╝r isimlerinin, y├Ântem isimlerinin bir par├žas─▒ olarak bir├žok y├Ântemi vard─▒r. ├ľrne─čin, BinaryReader t├╝r├╝, ReadBoolean , ReadInt32 , ReadSingle ve benzeri gibi y├Ântemler sunar ve System.Convert t├╝r├╝ ToBoolean , ToInt32 , ToSingle ve benzeri gibi y├Ântemler sunar . A┼ča─č─▒daki kodu yazmak yasal olsa da, y├╝zer sat─▒r benim i├žin ├žok do─čal de─čil ve sat─▒r─▒n do─čru oldu─ču a├ž─▒k de─čil:
 BinaryReader br = new BinaryReader(...);
float val  = br.ReadSingle(); // OK, but feels unnatural
Single val = br.ReadSingle(); // OK and feels good
 

Yani orada var. Bunlar─▒n hepsi ger├žekten iyi noktalar oldu─čunu d├╝┼č├╝n├╝yorum. Ancak, kendimi Jeffrey'nin tavsiyelerini kendi kodumda kullan─▒rken bulmuyorum. Belki de C # d├╝nyam─▒n i├žinde s─▒k─▒┼čt─▒m ama kodumu ├žer├ževe koduna benzetmeye ├žal─▒┼č─▒yorum.


481







string ayr─▒lm─▒┼č bir kelimedir, ancak String yaln─▒zca bir s─▒n─▒f ad─▒d─▒r. Bu string , tek ba┼č─▒na bir de─či┼čken ad─▒ olarak kullan─▒lamaz anlam─▒na gelir .

E─čer bir nedenden ├Ât├╝r├╝ string olarak adland─▒r─▒lan bir de─či┼čken isteseydiniz , bu derlemelerin sadece ilkini g├Âr├╝rs├╝n├╝z:

 StringBuilder String = new StringBuilder();  // compiles
StringBuilder string = new StringBuilder();  // doesn't compile 
 

Ger├žekten dize ad─▒ verilen bir de─či┼čken ad─▒ istiyorsan─▒z, @ ├Ânek olarak kullanabilirsiniz :

 StringBuilder @string = new StringBuilder();
 

Bir di─čer kritik fark: Y─▒─č─▒n Ta┼čmas─▒ onlar─▒ farkl─▒ ┼čekilde vurgular.


436







Tek fark var - sen kullanamazs─▒n─▒z String olmadan using System; ├Ânceden.


374







Yukar─▒da ele al─▒nd─▒; ancak string yans─▒mada kullanamazs─▒n─▒z ; kullanmal─▒s─▒n String .


299







System.String .NET dize s─▒n─▒f─▒d─▒r - C # string i├žin bir takma add─▒r System.String - kullan─▒mda bunlar ayn─▒d─▒r.

Kurallara gelince, ├žok fazla t─▒kanmam ve sadece istedi─činiz gibi kullan─▒n. Hayatta daha ├Ânemli ┼čeyler var ve kod yine de ayn─▒ olacak.

E─čer kulland─▒─č─▒n─▒z tamsay─▒lar boyutunu belirlemek i├žin gereklidir sistemleri bina kendinizi bulmak ve b├Âylece kullan─▒m e─čilimi varsa Int16 , Int32 , UInt16 , UInt32 vb o zaman kullanmak daha do─čal g├Âr├╝nebilir String - ve farkl─▒ .net dilleri aras─▒nda hareket ederken might i┼čleri daha anla┼č─▒l─▒r k─▒lar - aksi halde string ve int kullan─▒rd─▒m.


242







.NET Bi├žimlendirme nedenlerinden dolay─▒ b├╝y├╝k harfleri (takma adlar─▒ yerine) tercih ederim . .NET T├╝rleri, di─čer nesne t├╝rleri (de─čer t├╝rleri sonu├žta, do─čru nesnelerdir) ile ayn─▒ renklidir.

Ko┼čullu ve kontrol anahtar kelimeleri (gibi if , switch ve return ) k├╝├ž├╝k harf ve koyu mavi renktedir (varsay─▒lan olarak). Ve kullan─▒m ve formatta anla┼čmazl─▒k olmamas─▒n─▒ tercih ederim.

D├╝┼č├╝nmek:

 String someString; 
string anotherString; 
 

198







string ve String her ┼čekilde ayn─▒d─▒r (b├╝y├╝k harf "S" hari├ž). Hi├žbir ┼čekilde performans ├ž─▒kar─▒m─▒ yoktur.

string S├Âzdizimi vurgulamas─▒ nedeniyle ├žo─ču projede k├╝├ž├╝k harf tercih edilir


186







C #, CLR ile birlikte kullan─▒lan bir dildir.

string C # t├╝r├╝ndedir.

System.String CLR'deki bir tiptir.

C # kulland─▒─č─▒n─▒zda birlikte CLR string ile e┼čle┼čtirilecektir System.String .

Teorik olarak, Java bayt kodunu ├╝reten bir C #-derleyicisi uygulayabilirsiniz. Java derleyici kitapl─▒─č─▒ ile birlikte ├žal─▒┼čabilmesi string i├žin bu derleyicinin mant─▒kl─▒ bir uygulamas─▒ muhtemelen e┼členecektir java.lang.String .


177







Bu YouTube videosu pratik olarak nas─▒l farkl─▒ olduklar─▒n─▒ g├Âsterir.

Ama ┼čimdi uzun bir metinsel cevap i├žin.

Biz bahsederken .NET iki farkl─▒ ┼čey var bir tane var .NET ├žer├ževe ve di─čer diller (vard─▒r C# , VB.NET o ├žer├ževeyi kullanmak vs).


g├Âr├╝nt├╝ tan─▒m─▒n─▒ buraya girin

" System.String " aka "String" (b├╝y├╝k harf "S"), .NET "string" bir C# veri t├╝r├╝d├╝r.


g├Âr├╝nt├╝ tan─▒m─▒n─▒ buraya girin

K─▒sacas─▒ "String", "string" in bir di─čer ad─▒d─▒r (farkl─▒ adlarla ayn─▒ ┼čey ad─▒ verilir). Dolay─▒s─▒yla teknik olarak her ikisi de a┼ča─č─▒daki kod ifadeleri ayn─▒ ├ž─▒kt─▒y─▒ verecektir.

 String s = "I am String";
 

veya

 string s = "I am String";
 

Ayn─▒ ┼čekilde, a┼ča─č─▒da g├Âsterildi─či gibi di─čer c # veri t├╝r├╝ne ili┼čkin di─čer adlar vard─▒r: -

object:, System.Object string:, System.String bool:, System.Boolean byte:, System.Byte sbyte:, System.SByte short: System.Int16 vb

┼×imdi programc─▒n─▒n bak─▒┼č a├ž─▒s─▒ndan milyon dolarl─▒k soru Peki "String" ve "string" ne zaman kullan─▒l─▒r?

Kar─▒┼č─▒kl─▒─č─▒ ├Ânlemek i├žin ilk ┼čey s├╝rekli olarak bunlardan birini kullan─▒n. Ancak de─či┼čken bildirimi yapt─▒─č─▒n─▒zda en iyi uygulamalar a├ž─▒s─▒ndan "string" (small "s") kullanmak iyidir ve bunu bir s─▒n─▒f ad─▒ olarak kullan─▒rken "String" (b├╝y├╝k harf "S") tercih edilir.

A┼ča─č─▒daki kodda sol taraf de─či┼čken bir bildiridir ve "string" ile bildirilir. Sa─č tarafta bir y├Ântem diyoruz, bu y├╝zden "String" daha mant─▒kl─▒.

 string s = String.ToUpper() ;
 

162







K├╝├ž├╝k harf string bir takma add─▒r System.String . Onlar ayn─▒ C# .

Sistem t├╝rleri (kullanmak gerekip gerekmedi─či konusunda bir tart─▒┼čma var System.Int32 , System.String vs.) tipleri veya C# aliases ( int , string , vs). ┼×ahsen kullanman─▒z gerekti─čine inan─▒yorum C# aliases , ama bu benim ki┼čisel tercihim.


155







string sadece bir takma add─▒r System.String . Derleyici onlara ayn─▒ ┼čekilde davranacakt─▒r.

Tek pratik fark, bahsetti─činiz gibi vurgulayan s├Âzdizimi ve using System kullan─▒yorsan─▒z yazmak zorunda olman─▒zd─▒r String .


149







─░kisi de ayn─▒. Ancak kodlama k─▒lavuzlar─▒ a├ž─▒s─▒ndan, bunun string yerine kullanmak daha iyidir String . Genelde geli┼čtiricilerin kulland─▒─č─▒ ┼čey budur. kullanmak yerine ├Ârne─čin Int32 kulland─▒─č─▒m─▒z int olarak int i├žin di─čer ad Int32

FYI ÔÇťAnahtar kelime dizgisi yaln─▒zca ├Ânceden tan─▒mlanm─▒┼č s─▒n─▒f i├žin bir takma add─▒r System.String .ÔÇŁ - C # Dil Belirtimi 4.2.3 http://msdn2.microsoft.com/En-US/library/aa691153.aspx


135







Di─čerlerinin dedi─či gibi, onlar ayn─▒. StyleCop kurallar─▒, varsay─▒lan olarak, kullanmak zorunlu k─▒lar string C # kodu stili olarak ba┼čvuran d─▒┼č─▒nda en iyi uygulamalar─▒, System.String gibi statik i┼člevleri String.Format , String.Join , String.Concat , vb ...


114







6 y─▒l ve 5 ay sonra yeni cevap (erteleme).

Her string zaman sabit bir anlam─▒ olan ayr─▒lm─▒┼č bir C # anahtar s├Âzc├╝─č├╝ olsa da, her ┼čeye ba┼čvurabilecek String s─▒radan bir tan─▒mlay─▒c─▒d─▒r . Ge├žerli t├╝r├╝n ├╝yelerine ba─čl─▒ olarak, ge├žerli ad alan─▒ ve uygulanan using y├Ânergeler ve bunlar─▒n yerle┼čimi, String ondan farkl─▒ bir de─čer veya t├╝r olabilir global::System.String .

using Direktiflerin yard─▒mc─▒ olamayaca─č─▒ iki ├Ârnek verece─čim .


─░lk olarak, bir String a, de─čer ak─▒m tipi (veya yerel bir de─či┼čken) ait:

 class MySequence<TElement>
{
  public IEnumerable<TElement> String { get; set; }

  void Example()
  {
    var test = String.Format("Hello {0}.", DateTime.Today.DayOfWeek);
  }
}
 

Yukar─▒dakiler derlenmeyecektir ├ž├╝nk├╝ IEnumerable<> denilen statik olmayan bir ├╝yeye sahip de─čildir Format ve uzatma metotlar─▒ uygulanmaz. Yukar─▒daki durumda, String bir t├╝r├╝n s├Âzdizimsel olarak tek olas─▒l─▒k oldu─ču ba┼čka ba─člamlarda da kullanmak m├╝mk├╝n olabilir . ├ľrne─čin String local = "Hi mum!"; , Tamam olabilir (ad alan─▒na ve using y├Ânergelere ba─čl─▒ olarak ).

Daha da k├Ât├╝s├╝: String.Concat(someSequence) Muhtemelen ( using s'ye ba─čl─▒ olarak ) Linq uzatma y├Ântemine gidecektir Enumerable.Concat . Statik y├Ânteme gitmeyecek string.Concat .


─░kincisi, ge├žerli t├╝r├╝n i├žine yerle┼čtirilmi┼č String ba┼čka bir t├╝r oldu─čunda :

 class MyPiano
{
  protected class String
  {
  }

  void Example()
  {
    var test1 = String.Format("Hello {0}.", DateTime.Today.DayOfWeek);
    String test2 = "Goodbye";
  }
}
 

Ne Example y├Ântemde ifade derler. ─░┼čte String bir piyano daima dize , MyPiano.String . ├ťzerinde hi├žbir ├╝ye ( static veya yoktur) Format (veya temel s─▒n─▒f─▒ndan miras al─▒nm─▒┼č). Ve de─čer "Goodbye" ona d├Ân├╝┼čt├╝r├╝lemez.


96







Sistem t├╝rlerini kullanmak, e─čer b├Âyle bir ┼čey yap─▒yorsan─▒z C # ve VB.Net aras─▒nda ba─člant─▒ kurmay─▒ kolayla┼čt─▒r─▒r.


94







Ba┼čka hangi programc─▒lar aras─▒nda yayg─▒n bir uygulama gibi g├Âr├╝n├╝yor kar┼č─▒, tercihim String ├╝zerinde string sadece ger├že─či vurgulamak i├žin String Jon Skeet belirtildi─či gibi, bir referans t├╝r├╝d├╝r.


85







string bir di─čer ad─▒d─▒r (veya steno) System.String . Bu, string kastetti─čimiz yazarak anlam─▒na gelir System.String . Think linkinde daha fazlas─▒n─▒ okuyabilirsiniz: 'string', System.String'in bir takma ad─▒d─▒r.


80







Bunu, Ritchers kitab─▒ndan, bu yaz─▒lar─▒n cevab─▒na eklemek istiyorum:

C # dili belirtimi, ÔÇťTarz olarak, anahtar kelimenin kullan─▒m─▒, t├╝m sistem t├╝r├╝ ad─▒n─▒n kullan─▒m─▒ i├žin tercih edildi─činiÔÇŁ belirtir. Dil belirtimine kat─▒lm─▒yorum; FCL tipi adlar─▒n─▒ kullanmay─▒ tercih ediyorum ve ilkel t├╝r adlar─▒ndan tamamen ka├ž─▒n─▒yorum. Asl─▒nda, derleyicilerin ilkel t├╝r adlar─▒ bile vermemesini ve geli┼čtiricilerin FCL t├╝r adlar─▒n─▒ kullanmaya zorlamas─▒n─▒ diliyorum. ─░┼čte nedenlerim:

  • Baz─▒ geli┼čtiricilerin kafas─▒n─▒n kar─▒┼čt─▒─č─▒n─▒, kodlar─▒nda string veya string kullan─▒l─▒p kullan─▒lmayaca─č─▒n─▒ bilmeden kar─▒┼čt─▒─č─▒n─▒ g├Ârd├╝m . C # dizesinde (bir anahtar kelime) tam olarak System.String (bir FCL t├╝r├╝) ile e┼čle┼čti─či i├žin fark yoktur ve her ikisi de kullan─▒labilir. Benzer ┼čekilde, baz─▒ geli┼čtiriciler s├Âyledi─čini duymu┼čtum int uygulamas─▒ 32-bit i┼čletim sistemi ├žal─▒┼čt─▒ran bir 32 bit tam say─▒ ve uygulaman─▒n 64-bit i┼čletim sistemi ├╝zerinde ├žal─▒┼čan 64 bitlik tamsay─▒ temsil etti─čini. Bu ifade kesinlikle yanl─▒┼čt─▒r: C # 'da, int her zaman System.Int32 ile e┼členir ve bu nedenle kodun ├╝zerinde ├žal─▒┼čt─▒─č─▒ i┼čletim sisteminden ba─č─▒ms─▒z olarak 32-bit bir tamsay─▒y─▒ temsil eder. Programc─▒lar Int32'yi kendi kodlar─▒nda kullan─▒rlarsa, bu olas─▒ kar─▒┼č─▒kl─▒k da ortadan kalkar.

  • C # 'de uzun , System.Int64 ile e┼čle┼čir , ancak farkl─▒ bir programlama dilinde, uzun bir Int16 veya Int32 ile e┼členebilir . Asl─▒nda, C ++ / CLI, bir Int32 oldu─ču s├╝rece i┼člem yapar . Kaynak kodu bir dilde okuyan bir ki┼či, farkl─▒ bir programlama dilinde programlamaya al─▒┼čm─▒┼čsa, kodun amac─▒n─▒ kolayca yanl─▒┼č yorumlayabilir. Asl─▒nda, ├žo─ču dil bir anahtar kelime olarak bile uzun s├╝re i┼člemez ve onu kullanan kodu derlemez.

  • FCL, t├╝r isimlerinin, y├Ântem isimlerinin bir par├žas─▒ olarak bir├žok y├Ântemi vard─▒r. ├ľrne─čin, BinaryReader t├╝r├╝, ReadBoolean , ReadInt32 , ReadSingle ve benzeri gibi y├Ântemler sunar ve System.Convert t├╝r├╝, ToBoolean , ToInt32 , ToSingle ve benzeri gibi y├Ântemler sunar . A┼ča─č─▒daki kodu yazmak yasal olsa da, y├╝zer sat─▒r benim i├žin ├žok do─čal de─čil ve sat─▒r─▒n do─čru oldu─ču a├ž─▒k de─čil:

     BinaryReader br = new BinaryReader(...);
    float val = br.ReadSingle(); // OK, but feels unnatural
    Single val = br.ReadSingle(); // OK and feels good
     
  • C # kullanan bir├žok programc─▒, di─čer programlama dillerinin CLR'ye kar┼č─▒ kullan─▒labilece─čini unutmaya meyillidir ve bu nedenle, C # -ism'ler s─▒n─▒f k├╝t├╝phanesi koduna s├╝r├╝n├╝r. ├ľrne─čin, Microsoft'un FCL neredeyse sadece C # ile yaz─▒lm─▒┼č ve FCL tak─▒m─▒nda geli┼čtiriciler art─▒k k├╝t├╝phane b├Âyle i├žine y├Ântemler girmi┼čtik Array sÔÇÖ GetLongLength bir d├Ând├╝ren, Int64 bir olan de─čeri uzun C gibi (di─čer dillerde C # ancak ++ / CLI). Bir ba┼čka ├Ârnek ise System.Linq.Enumerable sitesindeki LongCount y├Ântemi.

Paragraf─▒n tamam─▒n─▒ okumadan ├Ânce onun fikrini alamad─▒m.


73







String ( System.String ), temel s─▒n─▒f k├╝t├╝phanesindeki bir s─▒n─▒ft─▒r. string (k├╝├ž├╝k harf), System.String'in di─čer ad─▒ olan C # 'da ayr─▒lm─▒┼č bir ├žal─▒┼čmad─▒r. Int32 - int, oldu─ču gibi benzer bir durumdur Boolean vs. bool . Bu C # dile ├Âzg├╝ anahtar kelimeler, ilkelleri C'ye benzer bir tarzda bildirmenize olanak sa─člar.


72







String bir anahtar kelime de─čildir ve tan─▒mlay─▒c─▒ olarak kullan─▒labilir, oysa string bir anahtar kelimedir ve tan─▒mlay─▒c─▒ olarak kullan─▒lamaz. Ve fonksiyon a├ž─▒s─▒ndan her ikisi de ayn─▒d─▒r.


66







Partiye ge├ž geldi─čimde: CLR tiplerini zaman─▒n% 100'├╝n├╝ kullan─▒yorum (peki, C # tipini kullanmaya zorlamad─▒k├ža ama en son ne zaman oldu─čunu hat─▒rlam─▒yorum).

Bunu y─▒llar ├Ânce Ritchie'nin CLR kitaplar─▒na g├Âre yapmaya ba┼člad─▒m. Bana g├Âre, t├╝m CLR dillerinin sonu├žta CLR t├╝rlerini destekleyebilmesi gerekti─čine de─čindi, bu nedenle CLR t├╝rlerini kullanarak daha net ve muhtemelen daha fazla "yeniden kullan─▒labilir" kod sa─člay─▒n.

┼×imdi y─▒llard─▒r yap─▒yorum, bu bir al─▒┼čkanl─▒k ve VS'in CLR tipleri i├žin g├Âsterdi─či renklendirmeyi seviyorum.

Tek ger├žek d├╝┼č├╝r├╝c├╝, otomatik tamamlaman─▒n C # t├╝r├╝n├╝ kullanmas─▒d─▒r, bu y├╝zden bunun yerine CLR t├╝r├╝n├╝ belirtmek i├žin otomatik olarak olu┼čturulan t├╝rleri yeniden yazar─▒m.

Ayr─▒ca, ┼čimdi, "int" veya "string" g├Ârd├╝─č├╝mde, 1970'lerin C koduna bak─▒yorum gibi, bana ger├žekten ├žok yanl─▒┼č geliyor.


66







Bu ger├žekten bir kongre meselesi. string sadece C / C ++ stiline benziyor. Genel kural, se├žti─činiz dilin sa─člad─▒─č─▒ k─▒sayollar─▒ kullanmakt─▒r (int / Int i├žin Int32 ). Bu "nesne" i├žin decimal de ge├žerli.

Teorik olarak bu, kodu "int" nin gelebilece─či 64-bit gelecekteki baz─▒ standartlarda kodlamaya yard─▒mc─▒ olabilir Int64 , ama mesele bu de─čil ve herhangi bir y├╝kseltme sihirbaz─▒n─▒n herhangi bir int referans─▒ Int32 sadece g├╝venli olmas─▒ i├žin de─či┼čtirmesini beklerdim .


64







Arada fark yok.

C # anahtar s├Âzc├╝─č├╝ string .NET t├╝r├╝ne e┼členir System.String - dilin adland─▒rma kurallar─▒na uygun bir takma add─▒r.

Benzer ┼čekilde, int e┼čler System.Int32 .


49







Daniel Solis'nin kitab─▒ndan bu konuda bir al─▒nt─▒ var .

├ľnceden tan─▒mlanm─▒┼č t├╝m t├╝rler do─črudan altta yatan .NET t├╝rleriyle e┼čle┼čtirilir. C # tipi isimleri (string) sadece .NET t├╝rleri (String veya System.String) i├žin takma adlard─▒r, bu nedenle .NET isimlerinin kullan─▒lmas─▒, bu cesaretlendirilmi┼č olmas─▒na ra─čmen, s├Âzdizimsel olarak iyi ├žal─▒┼č─▒r. Bir C # program─▒nda, .NET adlar─▒ yerine C # adlar─▒n─▒ kullanmal─▒s─▒n─▒z.


44







string bir anahtar kelimedir ve string'i tan─▒mlay─▒c─▒ olarak kullanamazs─▒n─▒z.

Dize bir anahtar kelime de─čil ve onu tan─▒mlay─▒c─▒ olarak kullanabilirsiniz:

├ľrnek

 string String = "I am a string";
 

Anahtar kelime string , System.String anahtar kelime sorunundan ba┼čka bir takma add─▒r, ikisi tam olarak e┼čde─čerdir.

  typeof(string) == typeof(String) == typeof(System.String)
 

41







Evet, aralar─▒ndaki fark yok, t─▒pk─▒ bool ve ayn─▒ Boolean .


40







─░kisi aras─▒nda fark yoktur - string ancak di─čer geli┼čtiricilerin kaynak kodunu g├Âz ├Ân├╝ne al─▒rken tercih edilen se├ženek olarak g├Âr├╝nmektedir.


34