Kiểu dữ liệu trong C#

Kiểu dữ liệu trong C#

Phân loại kiểu dữ liệu

Các biến trong C# được phân loại thành 3 kiểu sau:

  • Kiểu giá trị (Value type)
  • Kiểu tham chiếu (Reference type)
  • Kiểu con trỏ (Pointer type)

Bộ nhớ Stack và Heap

Trong C# có hai loại bộ nhớ là Stack và Heap. Cả hai đều là những vùng nhớ được lưu trữ trên RAM.

Stack là vùng nhớ hoạt động theo mô hình LIFO (vào sau, ra trước) dùng để lưu trữ các biến tạm thời được tạo ra bởi các phương thức. Khi một biến được khai báo, nó được tự động đẩy vào stack (push).

Nếu phương thức kết thúc, tất cả các biến mà phương thức đó đã đẩy vào stack đều bị giải phóng (pop) và mất đi. Khi một biến bị đẩy khỏi stack, vùng nhớ nó đã chiếm có thể được sử dụng lại cho các biến khác.

Stack được CPU quản lý và tối ưu hóa cho nhiệm vụ lưu trữ biến cục bộ. Người lập trình không cần phải can thiệp vào vùng nhớ này. Tốc độ đọc ghi dữ liệu với stack rất cao, tuy nhiên kích thước của stack lại bị giới hạn.

Heap là một vùng nhớ khác cho phép chương trình tự do lưu trữ giá trị. Giá trị tạo và lưu trên heap không bị giới hạn về kích thước mà chỉ phụ thuộc và kích thước RAM. Tuy nhiên tốc độ đọc ghi dữ liệu trên heap chậm hơn so với stack.

Để sử dụng heap, chương trình phải tự mình xin cấp phát và giải phóng bộ nhớ chiếm dụng trên heap. Nếu không sử dụng hợp lý vùng nhớ này có thể dẫn đến rò bộ nhớ (memory leak), vốn rất phổ biến khi lập trình C/C++.

.NET framework hỗ trợ rất tốt việc cấp phát và quản lý bộ nhớ của chương trình qua GC (Garbage Collector) nên người lập trình .NET không cần để ý nhiều đến việc xin cấp phát và giải phóng bộ nhớ heap.

Kiểu giá trị trong C#

Các biến kiểu giá trị có thể được gán một giá trị một cách trực tiếp, giá trị này được lưu trong bộ nhớ Stack. Chúng được kế thừa từ lớp System.ValueType.

Kiểu giá trị trực tiếp chứa dữ liệu. Một số ví dụ là int, char, và float, tương ứng giữ số nguyên, chữ cái, và số thực. Khi bạn khai báo một kiểu int, hệ thống cấp phát bộ nhớ để lưu giá trị đó.

Bảng sau liệt kê các kiểu giá trị có sẵn trong C# 2010:

Kiểu Biểu diễn Dãy giá trị Giá trị mặc định
bool Giá trị Boolean True hoặc False False
byte Kiểu unsigned integer (8 bit) 0 tới 255 0
char Kiểu Unicode character (16 bit) U +0000 tới U +ffff ‘\0’
decimal Kiểu thập phân (128 bit) (-7.9 x 1028 tới 7.9 x 1028) / 100 to 28 0.0M
double Kiểu double (64 bit) (+/-)5.0 x 10-324 tới (+/-)1.7 x 10308 0.0D
float Kiểu float (32 bit) -3.4 x 1038 tới + 3.4 x 1038 0.0F
int Kiểu integer (32 bit) -2,147,483,648 tới 2,147,483,647 0
long Kiểu signed integer (64 bit) -9,223,372,036,854,775,808 tới 9,223,372,036,854,775,807 0L
sbyte Kiểu signed integer (8 bit) -128 tới 127 0
short Kiểu signed integer (16 bit) -32,768 tới 32,767 0
uint Kiểu unsigned integer (32 bit) 0 tới 4,294,967,295 0
ulong Kiểu unsigned integer (64 bit) 0 tới 18,446,744,073,709,551,615 0
ushort Kiểu unsigned integer (16 bit) 0 tới 65,535 0

Từ khóa sizeof trong C#

Để lấy kích cỡ chính xác của một kiểu hoặc một biến trên một nền tảng cụ thể, bạn có thể sử dụng phương thức sizeof. Biểu thức sizeof(type) hiển thị kích cỡ của đối tượng hoặc kiểu bằng giá trị byte. Ví dụ dưới đây để lấy kích cỡ của kiểu int trên bất kỳ máy tính:

using System;

namespace DataTypeApplication 
{
   public class Program 
   {
      public static void Main(string[] args) 
      {
         Console.WriteLine("Size of int: {0}", sizeof(int));
         Console.ReadLine();
      }
   }
}
C#

Biên dịch và chạy chương trình C# trên sẽ cho kết quả sau:

Size of int: 4

Bạn có thể biên dịch và xem kết quả online tại đây.

Kiểu tham chiếu trong C#

Kiểu tham chiếu thì biến không chứa dữ liệu thực sự mà chúng chứa tham chiếu tới một vị trí bộ nhớ. Dữ liệu kiểu tham chiếu được lưu trong bộ nhớ Heap.

Việc sử dụng nhiều biến, thì kiểu tham chiếu có thể tham chiếu tới tới một vị trí bộ nhớ. Nếu dữ liệu trong vị trí bộ nhớ bị thay đổi bởi một trong số các biến, thì biến khác tự động phản ánh sự thay đổi về giá trị này. Ví dụ các kiểu tham chiếu có sẵn trong C# là: objectdynamic, và string.

Kiểu object trong C#

Kiểu object là lớp cơ sở cơ bản cho tất cả kiểu dữ liệu trong C# Common Type System (CTS). Object là một alias cho lớp System.Object. Các kiểu object có thể được gán giá trị của bất kỳ kiểu, kiểu giá trị, kiểu tham chiếu, kiểu tự định nghĩa (user-defined) khác. Tuy nhiên, trước khi gán các giá trị, nó cần một sự chuyển đổi kiểu.

Khi một kiểu giá trị được chuyển đổi thành kiểu object, nó được gọi là boxing và ngược lại, khi một kiểu object được chuyển đổi thành kiểu giá trị, nó được gọi là unboxing.

object obj;
obj = 100; // this is boxing
C#

Kiểu Dynamic trong C#

Bạn có thể lưu giữ bất kỳ kiểu giá trị nào trong biến kiểu dữ liệu dynamic. Việc kiểm tra các kiểu biến này diễn ra tại run time.

Cú pháp để khai báo một kiểu dynamic trong C# là:

dynamic <variable_name> = value;
C#

Ví dụ:

dynamic d = 20;
C#

Kiểu dynamic thì tương tự với kiểu object, ngoại trừ việc kiểm tra cho các biến kiểu object diễn ra tại thời điểm biên dịch (compile time), trong khi việc kiểm tra các biến kiểu dynamic diễn ra tại thời điểm thực thị (run time).

Kiểu string trong C#

Kiểu string trong C# cho phép bạn gán bất kỳ giá trị chuỗi nào cho một biến. Kiểu string là một alias cho lớp System.String. Nó kế thừa từ kiểu object. Giá trị cho một kiểu string có thể được gán bởi sử dụng các hằng chuỗi trong hai mẫu: quoted và @quoted.

Ví dụ:

string str = "Comdy";
C#

Và một hằng chuỗi @quoted trông như sau:

@"Comdy";
C#

Các kiểu tự định nghĩa (user-defined) trong C# là: Class, Interface, hoặc Delegate. Chúng ta sẽ bàn về các kiểu này trong các chương sau.

Các kiểu tự định nghĩa (user-defined) trong C# là: Class, Interface, hoặc Delegate. Chúng ta sẽ bàn về các kiểu này trong các chương sau.

Kiểu con trỏ trong C#

Các biến kiểu con trỏ lưu giữ địa chỉ bộ nhớ của kiểu khác. Các con trỏ trong C# có khả năng như con trỏ trong C hoặc C++.

Cú pháp để khai báo một kiểu con trỏ trong C# là:

type* identifier;
C#

Ví dụ:

char* cptr;
int* iptr;
C#

Chúng ta sẽ thảo luận về kiểu con trỏ ở chương: Unsafe Code trong C#.

Bạn có muốn xem bài viết tiếp theo không? Nó ở dưới đây nè.

87 thoughts on “Kiểu dữ liệu trong C#

  1. weight loss gummies reviews says:

    Someone actually help to make significantly articles I’d say This is the first time I frequented your website and up to now I’m impressed with the research you made to create this piece amazing Fantastic job.

  2. Tree Email says:

    I loved even more than you will get done right here. The picture is nice, and your writing is stylish, but you seem to be rushing through it, and I think you should give it again soon. I’ll probably do that again and again if you protect this walk.

  3. Suivre Téléphone says:

    Vous pouvez utiliser un logiciel de gestion des parents pour guider et surveiller le comportement des enfants sur Internet. Avec l’aide des 10 logiciels de gestion parentale les plus intelligents suivants, vous pouvez suivre l’historique des appels de votre enfant, l’historique de navigation, l’accès au contenu dangereux, les applications qu’il installe, etc.

  4. fake email address says:

    I wanted to take a moment to commend you on the outstanding quality of your blog. Your dedication to excellence is evident in every aspect of your writing. Truly impressive!

  5. youtube to mp3 320 says:

    My brother recommended I might like this web site He was totally right This post actually made my day You cannt imagine just how much time I had spent for this information Thanks

  6. kmtfirm says:

    Wonderful web site Lots of useful info here Im sending it to a few friends ans additionally sharing in delicious And obviously thanks to your effort

  7. etruesports says:

    I do not even know how I ended up here but I thought this post was great I dont know who you are but definitely youre going to a famous blogger if you arent already Cheers

  8. etruesports says:

    Wow superb blog layout How long have you been blogging for you make blogging look easy The overall look of your site is magnificent as well as the content

  9. Bacará móvel says:

    Alguém essencialmente deu uma mão para fazer artigos significativos. Id state Essa é a primeira vez que visitei a página do seu site e até agora fiquei surpreso com a pesquisa que você fez para tornar este envio real incrível Tarefa maravilhosa

  10. spacedaily says:

    Nem sei como vim parar aqui mas achei ótimo esse post não sei quem você é mas com certeza você está indo para um blogueiro famoso se ainda não o é.

  11. minihints says:

    Meu primo me recomendou este site, não tenho certeza se este post foi escrito por ele, pois ninguém mais sabe tão detalhadamente sobre minha dificuldade. Você é maravilhoso, obrigado

  12. kalorifer soba says:

    Your blog is a constant source of inspiration for me. Your passion for your subject matter shines through in every post, and it’s clear that you genuinely care about making a positive impact on your readers.

  13. kalorifer sobası says:

    Your writing is a true testament to your expertise and dedication to your craft. I’m continually impressed by the depth of your knowledge and the clarity of your explanations. Keep up the phenomenal work!

  14. top888casino says:

    Your blog is a testament to your passion for your subject matter. Your enthusiasm is infectious, and it’s clear that you put your heart and soul into every post. Keep up the fantastic work!

  15. temp mail says:

    I share your level of enthusiasm for the work you’ve produced. The sketch you’ve displayed is refined, and the material you’ve authored is impressive. Nevertheless, you seem anxious about the prospect of heading in a direction that could cause unease. I agree that you’ll be able to address this concern in a timely manner.

  16. temp mail says:

    I was just as enthralled by your work as you were. The visual presentation is refined, and the written content is sophisticated. However, you seem anxious about the possibility of presenting something that could be perceived as questionable. I believe you’ll be able to rectify this matter in a timely manner.

  17. trendaddictor says:

    Usually I do not read article on blogs however I would like to say that this writeup very compelled me to take a look at and do so Your writing taste has been amazed me Thanks quite nice post

  18. globesimregistration says:

    Your blog is a testament to your dedication to your craft. Your commitment to excellence is evident in every aspect of your writing. Thank you for being such a positive influence in the online community.

  19. theorangedip says:

    Hi Neat post There is a problem along with your website in internet explorer would test this IE still is the market chief and a good section of other folks will pass over your magnificent writing due to this problem

  20. igamingpro says:

    Usually I do not read article on blogs however I would like to say that this writeup very compelled me to take a look at and do it Your writing style has been amazed me Thank you very nice article

  21. globesimregistration says:

    you are in reality a good webmaster The website loading velocity is amazing It sort of feels that youre doing any distinctive trick Also The contents are masterwork you have done a fantastic job in this topic

  22. thedeadlines says:

    Nice blog here Also your site loads up very fast What host are you using Can I get your affiliate link to your host I wish my site loaded up as quickly as yours lol

  23. globesimregistration says:

    Your blog is a breath of fresh air in the often stagnant world of online content. Your thoughtful analysis and insightful commentary never fail to leave a lasting impression. Thank you for sharing your wisdom with us.

  24. zeus138 says:

    al mulk artinya al mulk artinya al mulk artinya
    Howdy! This post couldn’t be written any better!
    Reading through this article reminds me of my previous roommate!
    He always kept preaching about this. I’ll send this information to him.

    Pretty sure he’s going to have a good read. Thank you for sharing!

  25. mawarslot says:

    taro togel taro togel taro togel
    taro togel (https://northernfortplayhouse.com/)
    Undeniably consider that that you said. Your favorite justification appeared to be at the net
    the simplest thing to take into accout of. I say to you, I
    definitely get annoyed whilst people think about issues
    that they plainly don’t recognize about.
    You controlled to hit the nail upon the highest and also
    defined out the entire thing with no need side-effects ,
    other people can take a signal. Will probably be again to get more.

    Thank you

  26. Family Dollar says:

    Family Dollar You’re so awesome! I don’t believe I have read a single thing like that before. So great to find someone with some original thoughts on this topic. Really.. thank you for starting this up. This website is something that is needed on the internet, someone with a little originality!

  27. lucky jet game says:

    Looking for the best strategy for Lucky Jet? Our Lucky Jet review covers tips, features, and what makes this crash game popular among players. Read now for a full guide!

  28. petloverhaven says:

    I am not sure where youre getting your info but good topic I needs to spend some time learning much more or understanding more Thanks for magnificent info I was looking for this information for my mission

  29. Healxo says:

    Hi my loved one I wish to say that this post is amazing nice written and include approximately all vital infos Id like to peer more posts like this

  30. kalorifer soba says:

    Keep up the fantastic work! Kalorifer Sobası odun, kömür, pelet gibi yakıtlarla çalışan ve ısıtma işlevi gören bir soba türüdür. Kalorifer Sobası içindeki yakıtın yanmasıyla oluşan ısıyı doğrudan çevresine yayar ve aynı zamanda suyun ısınmasını sağlar.

  31. kalorifer sobası says:

    Keep up the fantastic work! Kalorifer Sobası odun, kömür, pelet gibi yakıtlarla çalışan ve ısıtma işlevi gören bir soba türüdür. Kalorifer Sobası içindeki yakıtın yanmasıyla oluşan ısıyı doğrudan çevresine yayar ve aynı zamanda suyun ısınmasını sağlar.

  32. kalorifer sobası says:

    Keep up the fantastic work! Kalorifer Sobası odun, kömür, pelet gibi yakıtlarla çalışan ve ısıtma işlevi gören bir soba türüdür. Kalorifer Sobası içindeki yakıtın yanmasıyla oluşan ısıyı doğrudan çevresine yayar ve aynı zamanda suyun ısınmasını sağlar.

  33. kalorifer sobası says:

    Keep up the fantastic work! Kalorifer Sobası odun, kömür, pelet gibi yakıtlarla çalışan ve ısıtma işlevi gören bir soba türüdür. Kalorifer Sobası içindeki yakıtın yanmasıyla oluşan ısıyı doğrudan çevresine yayar ve aynı zamanda suyun ısınmasını sağlar.

  34. home goods dress form says:

    Irrespective of the scale of the flood injury an expert restoration firm can come in and restore your home and
    lives inside a few weeks the place as doing the cleanup by yourself
    will not be practically as thorough or fast. The flood
    water reached up to a few storeys high on some
    buildings.

  35. Sugar Defender Ingredients says:

    Sugar Defender Ingredients Discovering Sugar Defender has actually been a game-changer for
    me, as I have actually constantly been vigilant regarding
    handling my blood sugar level levels. I currently
    feel encouraged and confident in my ability to maintain healthy and balanced levels, and my newest health checks have
    mirrored this development. Having a reliable supplement to match my a big resource of convenience, and I’m genuinely thankful for the considerable difference Sugar Defender
    has made in my total well-being.

  36. 野沢 温泉 テニス says:

    時事通信 (2012年6月11日). 2023年6月1日閲覧。最終更新 2024年8月15日 (木)
    11:40 (日時は個人設定で未設定ならばUTC)。新着項目について月単位にて再編成してある。 “【特集】垂直離着陸機オスプレイ”.
    “女性デザイナーが北陸お取り寄せグルメ楽しむ日常描く「おとりよせしまっし!冷却水漏れによる炉心事故から「ヒロシマ」と呼ばれたこともあった。 “ソフトバンクとトヨタ自動車の共同出資会社「MONET」、事業を開始”. お探しの用語に一番近い記事を選んで下さい。漢字の読音は日本語の場合とは異なり、1字に対してほぼ1つに統一されている。 ウィドウメイカー (アメリカのバンド)(英語版) – ディー・

  37. 好きな顔タイプ診断 男性 says:

    明治5年7月12日(1872年8月15日)に天皇がこの区間の汽車に乗車している。東京(新橋)-横浜間の正式開業に先立って、明治5年5月7日(1872年6月12日)からこの区間が仮開業された。日本に鉄道を敷設することが決まったのは、明治2年11月10日(1869年12月12日)のことで、イギリス鉄道技術者たちがお雇い外国人として招かれ、明治3年3月(1870年4月)から東京-横浜間に日本最初の鉄道を敷設工事が開始され、まず開通したのは品川-横浜間だった。日本に電信線を架設することが決定されたのは、明治元年12月の新政府の廟議によってであり、イギリス人電信技士ジョージ・

  38. 嬉しい 最上級 敬語 says:

    1962年10月11日、インターコンチネンタルカップ第2戦、SLベンフィカ戦のスタメン。 11月19日、マラカナンスタジアムで行われたCRヴァスコ・ この後、ペレは思い出の地であるメキシコを振り出しに世界キャンペーンに旅立ち、11月19日には訪日し1週間滞在。 1950年、ペレが9歳の時に地元ブラジルで1950 FIFAワールドカップが開催された。 その後、寮に帰ってきたアカギにイカサマを見抜かれた上で、彼がニセアカギとの勝負で得た200万円の大金を賭けたゲームを提案され、自分たちが絶対に勝てると確信してこれを受ける。
    “ラジコプレミアムをWEBから登録したときとアプリ内課金で登録したときの違いはありますか|radiko ヘルプ”.
    クラブは必要な資金を捻出するために依然として国外への遠征ツアーを続けていたが、それまでの欧州や南米だけでなくアジアやアフリカ、北米といったサッカーの後進地域のチームとも試合を行うようになった。

  39. オクラ 和名 says:

    上坂すみれさん登場! 10月1日 目黒蒲田電鉄が池上電気鉄道(池上線)を合併。 1928年(昭和3年)5月5日 目黒蒲田電鉄が田園都市株式会社を合併。 9月2日 田園都市株式会社の鉄道部門を分離独立させ目黒蒲田電鉄設立。 なお、ビデオリサーチ社の視聴率調査では、2019年9月30日以降も引き続き8:00 –
    9:30の「第1部」と9:30 – 10:25の「第2部」に分けて当番組の番組平均視聴率を算出していた。

  40. とらがしら 漢字一覧 says:

    この教育改革はベトナム民主共和国の教育政策にも影響を与えた。小泉は、2002年(平成14年)8月30日に電撃的に朝鮮民主主義人民共和国(北朝鮮)訪問を発表し、9月17日に金正日国防委員長と初の日朝首脳会談を実現、日朝平壌宣言に調印した。 9月に行われた自民党総裁選で平成研究会は藤井孝男元運輸大臣を擁立して小泉おろしを図ったが、参院自民党幹事長であった青木幹雄がこれに与せず派閥分裂選挙となり、藤井は大敗。

  41. 渋谷 から 川越 says:

    アレジは突然のベルガーの来訪に驚くが「もう少しで戻るから、ちょっと待っててね」と返した。多くのドライバーがベルガーの復活を祝福するが、当然アレジもその1人。 1996年からベネトンに移籍するが、当初の契約は「完全なナンバーワン待遇」だったという。 つまりアレジのナンバーワン待遇は取り消されたことになる。後にアレジはナンバーワン待遇を諦めることを条件にベネトンから契約金の大幅アップを勝ち取ったと言われる。 ベルガーがアレジと同待遇を望んだことも理由のひとつでもあるが、これにはアレジも不快感を表し「来るのは構わないが政治的な動きはやめてほしい」とコメントし大きな波紋を呼ぶ。 この戦いで日本側は一方的に攻撃を受けるだけで基地上空での邀撃戦に終始し、敵に打撃を与えることはできなかった。

  42. ひとたび 意味 says:

    この時期のアニメブームも後期に突入すると、新たな人材の採用志向が強まり、レコード会社と歌手契約を結んだアーティスト、アイドルがアニメ声優として起用され、話題を呼んでいる。 インカム(仮称)」創設 給付と所得税減税を組み合わせた新制度「給付付き税額控除」を導入し、尊厳ある生活を支える基礎的所得を補償します。 6チームについて、各チームの90分経過時点までに獲得した得点数を予想する。庵野 それが理想です。

  43. 勤続10年すごい says:

    、幕府の道中奉行によって管轄された。
    1635年、江戸幕府は中国商船の入港を長崎一港に制限する措置を取ったが、中国人は長崎市内雑居を許されていた。元禄8年(1695年)、若年寄を務めていた近江国水口藩主・
    アメリカ入国に必要な書類は?発売額の変更について (PDF) – 東急電鉄、2022年2月3日、2022年2月3日閲覧。

  44. 箇条書 き 句読点 says:

    かき混ぜながら煮沸し、煮立つ直前に火から離し落ち着いたら再度火にかける。齊藤久美子「ロシアにおける企業会計と現代の課題」(PDF)『第24回北東アジア学会全国大会予稿集』、立命館大学、2018年9月、1-5頁、2020年7月4日閲覧。齊藤久美子「ロシアにおける会計の変遷と現代の課題」(PDF)、Working paper series 13、2013年、2020年7月4日閲覧。 18
    June 2020. 2020年6月18日閲覧。妻は日本の女優でモデルの後藤久美子。武部直美・

Leave a Reply

Your email address will not be published. Required fields are marked *