peri hokiperihokiclarustologisticsrimashaop.compola taktis menang gates of olympus x1000 perihokipemain perihoki bongkar trik jepep starlight princess x1000perihoki beri panduan lengkap bermain mahjong ways 2 pgsofttips cara penghasil uang pgsoft mahjong ways 2 perihokimahjong wins 3 perihoki memberikan penggali terbesarfenomena gates of olympus buka peluang besar bagi duta76cara dapat pola emas rahasia di duta7 wild west goldtrik menang pgsoft mahjong ways 2 modal receh maxwin duta76duta76 main pgsoft mahjong ways 2 di sela istirahatscatter hitam mahjong wins 3 spin pasti jepe duta76perihoki spin mahjong ways 2 pgsoft scatter hitam maxwinsimbol mahjong wins 3 yang sering muncul di awal perihokitrik gampang menang mahjong winscuan mahjong wins 3 tanpa hentipola spin taruhan kecil mahjong winsstrategi kunci scatter hitam beruntungacor total mahjong wayskemenangan maksimal mahjong wayskemenangan pria pekanbaru mahjong waysmahjong wins3 fenomena baru sumatera baratmenangkan mahjong dengan lincahmenembus batas keberuntungan mahjong waysmenjajal keberuntungan di mahjong wayspola gratis mahjong ways1scatter hitam senjata rahasia mahjong winsteknik spinning menguntungkan untuk scatter hitamanalisis rtp tertinggi mahjong winsfenomena scatter hitam mahjong winsibu rumah tangga dan keberuntungan mahjongkeseruan main mahjong wins3menang mahjong pengguna baru di sosial mediamenghargai setiap momen di mahjong waysserunya main mahjong di warung internetspin slow motion mancing scatterstrategi jitu maxwin mahjong waysstrategi jitu menang mahjong modal kecil jackpot besaranak kampung papua menggemparkan mahjongkeajaiban scatter hitam mahjong wayskeberhasilan joni mahjong winskejaiban mahjong ways di ujung jalanketua mahjong wins3 kehadiran kemenangan dimulai dari balimahjong kehadiran yang menguntungkanmahjong menggila adat88panduan kilat raih 108 jutatips memenangkan mahjongbarista kopi menang 110 juta spin mahjongdakota76 scatter hitam mahjong wins 3gagal cpns menang mahjong wins 3 rp120 jutakisah karyawan minimarket dapat thr lebih awal mahjong winskisah pelajar sma kuasai mahjong wins 3 inspirasi sekolahkisah penjaga parkir tanah abang motor baru mahjong winskisah sukses ibu rumah tangga bandung mahjong winsmahasiswa kkn beli iphone15 mahjong wins3 dakotamantan anak band influencer mahjong scatter hitampola rtp senin gates of olympus guru matematikaidola scatter hitam gampang meledakidola sensasi jackpotidola pola scatter hitamidola hasilkan jackpot dalam waktu singkatidola mahjong wins 3 bocortukang cuci motor menemukan keberuntungan di mahjong

A PHP Error was encountered

Severity: Warning

Message: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time

Filename: Session/Session.php

Line Number: 282

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: session_set_cookie_params(): Cannot change session cookie parameters when headers already sent

Filename: Session/Session.php

Line Number: 294

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time

Filename: Session/Session.php

Line Number: 304

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time

Filename: Session/Session.php

Line Number: 314

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time

Filename: Session/Session.php

Line Number: 315

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time

Filename: Session/Session.php

Line Number: 316

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time

Filename: Session/Session.php

Line Number: 317

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time

Filename: Session/Session.php

Line Number: 375

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time

Filename: drivers/Session_files_driver.php

Line Number: 108

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: session_set_save_handler(): Cannot change save handler when headers already sent

Filename: Session/Session.php

Line Number: 110

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: session_start(): Cannot start session when headers already sent

Filename: Session/Session.php

Line Number: 143

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

Kiểu dữ liệu trong C# - Freetuts
CĂN BẢN
NÂNG CAO
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Kiểu dữ liệu trong C#

Kiểu dữ liệu (data type) là một tập hợp gồm các nhóm dữ liệu có cùng đặc tính, cách lưu trữ của dữ liệu và các phép toán xử lý trên trường dữ liệu đó; nhằm mục đích phân loại các dữ liệu. Việc tìm hiểu và sử dụng đúng các kiểu dữ liệu sẽ giúp bạn tối ưu hóa được vùng nhớ cũng như sẽ sử dụng được các hàm xử lý dữ liệu dành riêng cho mỗi kiểu dữ liệu. Hôm nay chúng ta sẽ cùng nhau tìm hiểu các kiểu dữ liệu có trong C# nhé !

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Các biến trong C# được phân ra làm ba kiểu:

  • Kiểu giá trị (value type).
  • Kiểu tham chiếu (reference type).
  • Kiểu con trỏ (pointer type).

Bây giờ chúng ta sẽ lần lượt tìm hiểu về chúng nhé !

1. Kiểu giá trị - value type

Các biến thuộc kiểu này có thể được gán giá trị một cách trực tiếp, đây là kiểu dữ liệu được ngôn ngữ cung cấp. Nó kế thừa từ class System.ValueType.

Bài viết này được đăng tại [free tuts .net]

Một biến khi khai báo kiểu dữ liệu thì hệ thống sẽ cấp phát bộ nhớ, giá trị thì vùng nhớ của biến đó sẽ chứa giá trị của dữ liệu. Ví dụ như khi chúng ta khai báo một kiểu float thì hệ thống sẽ cấp cho ta vùng nhớ có giá trị 4 bytes và được lưu trữ trên bộ nhớ Stack.

Bảng dưới đây liệt kê danh sách các kiểu dữ liệu có sẵn trong C#:

Kiểu số nguyên

Kiểu dữ liệu Kích thước (bytes) Ý nghĩa
byte 1

Số nguyên dương không dấu có giá trị

từ 0 đến 255

sbyte 1

Số nguyên có dấu có giá trị

từ -128 đến 127

short 2

Số nguyên có dấu có giá trị

từ -32,768 đến 32,767

ushort 2

Số nguyên không dấu có giá trị

từ 0 đến 65,535

int 4

Số nguyên có dấu có giá trị

từ -2,147,483,647 đến  2,147,483,647

uint 4

Số nguyên không dấu có giá trị

từ 0 đến 4,294,967,295

long 8

Số nguyên có dấu có giá trị

từ -9,223,370,036,854,775,808 đến 9,223,370,036,854,775,807

ulong 8

Số nguyên không dấu có giá trị

từ 0 đến 18,446,744,073,709,551,615

Kiểu ký tự

Kiểu dữ liệu Kích thước (bytes) Ý nghĩa
char 2 Chứa một ký tự Unicode

Kiểu logic

Kiểu dữ liệu Kích thước (bytes) Ý nghĩa
bool 1 Chứa 1 trong 2 giá trị logic là true hoặc false

Kiểu số thực

Kiểu dữ liệu Kích thước (bytes) Ý nghĩa
float 4

Kiểu số thực dấu chấm động có giá trị dao động

từ 3.4E – 38 đến 3.4E + 38, với 7 chữ số có nghĩa

double 8

Kiểu số thực dấu chấm động có giá trị dao động

từ 1.7E – 308 đến 1.7E + 308, với 15, 16 chữ số có nghĩa

decimal 8 Có độ chính xác đến 28 con số và giá trị thập phân, được dùng trong tính toán tài chính

Từ khóa sizeof()

Trong trường hợp bạn quên giá trị của từng loại kiểu dữ liệu, bạn có thể sử dụng biểu thức sizeof(type) để lấy kích cở chính xác của một biểu thức hoặc một biến nào đó. Giá trị trả về của sizeof() là kích cỡ của đối tượng hoặc kiểu bằng giá trị byte.

 

Ví dụ
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace freetuts
{
	class freetuts
	{
		static void Main(string[] args)
		{
			Console.WriteLine("vi du ve khoa sizeof trong C#");
			Console.WriteLine("++++++++++++++++++++++++++++++");
			Console.WriteLine("Kich co kieu int la: {0}", sizeof(int));
			Console.WriteLine("Kich co kieu float la: {0}", sizeof(float));
			Console.WriteLine("Kich co kieu double la: {0}", sizeof(double));
			Console.WriteLine("Kich co kieu char la: {0}", sizeof(char));
			Console.ReadKey();
		}
	}
}

 

Khi thực thi chương trình trên, máy sẽ trả về kết quả:

demosizeof PNG

2. Kiểu tham chiếu - reference type

Nếu biến khai báo kiểu dữ liệu tham chiếu thì vùng nhớ của nó không chứa dữ liệu thực sự được lưu trong một biến mà vùng nhớ của nó chỉ chứa địa chỉ của đối tượng dữ liệu. Hay chúng tham chiếu đến vị trí nào đó trong bộ nhớ tùy theo địa chỉ đã được lưu. Giả sử dữ liệu trong vùng nhớ thay đổi bởi một biến nào đó, thì các dữ liệu của biến khác cũng thay đổi tự động giá trị của mình.

Ta có một số kiểu dữ liệu thuộc kiểu tham chiếu có sẵn trong C# như: object, dynamic, string... Và tất cả các kiểu dữ liệu do người dùng định nghĩa đều là kiểu dữ liệu tham chiếu.

Kiểu object

Đây là kiểu dữ liệu cơ bản nhất của tất cả các kiểu dữ liệu trong .NET. Mọi kiểu dữ liệu đều được kế thừa từ System.Object nên kiểu object có thể gán mọi giá trị của các kiểu dữ liệu khác như kiểu tham chiếu, kiểu giá trị hoặc kiểu do người dùng tự định nghĩa,... Tuy nhiên trước khi gán giá trị nó cần được chuyển kiểu.

 

Ví dụ
object obj;
obj = 123;
 // chúng ta đã chuyển kiểu dữ liệu object sang kiểu giá trị.

 

Kiểu dynamic

Đây là một kiểu dữ liệu mới được đưa vào trong C# 4.0. Ta có lưu mọi kiểu giá trị trong biến kiểu dynamic. Đối tượng thuộc kiểu này sẽ không xác định được kiểu dữ liệu cho đến khi chương trình được thực thi.

Ta khai báo kiểu dynamic như khai báo biến bình thường:

 

Cú pháp
dynamic <tên biến>;
//hoặc
dynamic <tên biến> = <giá trị>;

 

Kiểu string

Đây là một kiểu dữ liệu cho phép gán chuỗi vào biến. Nó được kế thừa từ kiểu object, có hai cách gán giá trị sau:

 

string str = "freetuts.net";
//hoặc có thể dùng cách dưới đây, với cách này thì bạn có thể dữ nguyên chuỗi truyền vào 
//kể cả chuỗi có nhiều dòng.
string str =  @"freetuts.net
                        hoc lap trinh mien phi va chat luong";

 

Ngoài ra còn có các kiểu dữ liệu tham chiếu do người dùng tự định nghĩa như class, interface hoặc delegate mà chúng ta sẽ tìm hiểu sau.

3. Kiểu con trỏ - pointer type.

Biến kiểu con trỏ lưu địa chỉ bộ nhớ của kiểu khác. Con trỏ trong C# có cùng khả năng như con trỏ trong C hoặc C++. Cú pháp để khai báo biến kiểu con trỏ là: type*identifier.

 

Ví dụ
char*abc;
int*xyz;

 

4. Kết luận

Qua bài này mình đã giúp các bạn biết về một số kiểu dữ liệu cơ bản trong C#, chi tiết các kiểu dữ liệu chúng ta sẽ tìm hiểu sau. Sang bài sau mình sẽ hướng dẫn các bạn chuyển đổi kiểu hay ép kiểu dữ liệu trong C# nhé. Hy vọng các bạn sẽ theo dõi và luôn đồng hành cùng freetuts. Chúc các bạn học tốt !

Cùng chuyên mục:

Memento Design Pattern trong C# - Cách triển khai và ví dụ

Memento Design Pattern trong C# - Cách triển khai và ví dụ

Interpreter Design Pattern trong C# - Cách triển khai và ví dụ

Interpreter Design Pattern trong C# - Cách triển khai và ví dụ

Strategy Design Pattern trong C# - Cách triển khai và ví dụ

Strategy Design Pattern trong C# - Cách triển khai và ví dụ

Visitor Design Pattern trong C# - Cách triển khai và ví dụ

Visitor Design Pattern trong C# - Cách triển khai và ví dụ

Command Design Pattern trong C# - Cách triển khai và ví dụ

Command Design Pattern trong C# - Cách triển khai và ví dụ

Observer Design Pattern trong C# - Cách triển khai và ví dụ

Observer Design Pattern trong C# - Cách triển khai và ví dụ

Iterator Design Pattern trong C# - Cách triển khai và ví dụ

Iterator Design Pattern trong C# - Cách triển khai và ví dụ

Proxy Design Pattern trong C# - Cách triển khai và ví dụ

Proxy Design Pattern trong C# - Cách triển khai và ví dụ

Composite Design Pattern trong C# - Cách triển khai và ví dụ

Composite Design Pattern trong C# - Cách triển khai và ví dụ

Bridge Design Pattern trong C# - Cách triển khai và ví dụ

Bridge Design Pattern trong C# - Cách triển khai và ví dụ

Decorator Design Pattern trong C# - Cách triển khai và ví dụ

Decorator Design Pattern trong C# - Cách triển khai và ví dụ

Facade Design Pattern trong C# - Cách triển khai và ví dụ

Facade Design Pattern trong C# - Cách triển khai và ví dụ

Adapter Design Pattern trong C# - Cách triển khai và ví dụ

Adapter Design Pattern trong C# - Cách triển khai và ví dụ

Singleton Design Pattern trong C# - Cách triển khai và ví dụ

Singleton Design Pattern trong C# - Cách triển khai và ví dụ

Prototype Design Pattern trong C# - Cách triển khai và ví dụ

Prototype Design Pattern trong C# - Cách triển khai và ví dụ

Builder Design Pattern trong C# - Cách triển khai và ví dụ

Builder Design Pattern trong C# - Cách triển khai và ví dụ

Tự viết ứng dụng quản lý xe ra vào C# Winforms và Firebase

Tự viết ứng dụng quản lý xe ra vào C# Winforms và Firebase

Trong bài viết này Freetuts chia sẽ cho các bạn một ứng dụng khá thú…

Factory Design Pattern trong C# - Cách triển khai và ví dụ

Factory Design Pattern trong C# - Cách triển khai và ví dụ

Chúng ta sẽ tìm hiểu về Factory Design Pattern trong C# là gì? Cách triển…

Hướng dẫn giải phương trình bậc hai trong C#

Hướng dẫn giải phương trình bậc hai trong C#

Giải phương trình bậc nhất ax + b = 0 trong C#

Giải phương trình bậc nhất ax + b = 0 trong C#

Top