Phần này chúng ta tìm hiểu các phương thức giúp bạn chuyển đổi, ép kiểu , phân tích bất kỳ kiểu dữ liệu nào sang kiểu mới. Tuy nhiên sẽ không có so sánh về khả năng xử lý của chúng trong công việc.

Casting & Type Conversions

Trong .NET thông thường có các loại chuyển đổi kiểu dữ liệu sau:
  • Implicit Conversions: Chuyển đổi tiềm ẩn, đây là kiểu chuyển đổi an toàn và không cần cú pháp (từ khóa). Ví dụ chuyển đổi từ một số kiểu nhỏ hơn sang lớn hơn Int -> Double, từ lớp con đến lớp cha (Derived -> Base)
  • Explicit Comversions: Chuyển đổi yêu cầu rõ ràng sử dụng từ khóa Cast
  • User Defined Conversions: Người dùng tự định nghĩa kiểu chuyển đổi dữ liệu
  • Conversion With Classes: Sự dụng các class để chuyển đổi các kiểu dự liệu

Đó là các định nghĩa về các kiểu chuyển đổi kiểu dữ liệu, bây giờ ta sẽ đi vào từng phần cụ

A. Conversion With Classes

1. Convert


- Class Convert nằm trong namespace System và một điều nữa nó là class tĩnh (static) cho nên bạn mới có cách sử dụng trực tiếp mà không phải khởi tạo New đối tượng
Ví dụ:
string s = "123";
int i = Convert.ToInt32(s);

- Một số quy tắc chuyển đổi cần biết:
  • Bạn khó lòng có thể chuyển đổi một đoạn text kiểu chuỗi sang kiểu khác (Int, Double, Date....) nếu đoạn text đó không thỏa mãn . Nhưng chuyển từ các kiểu khác sang chuỗi (string) thì hoàn toàn ổn. 
  • Bạn phải có nhiều ràng buộc để chuyển một kiểu số nguyên sang DateTime và ngược lại từ kiểu DateTime sang kiểu số nguyên cũng có nhiều cách tùy vào trường hợp.
  • Tương tự như vậy, muốn Convert một đoạn text kiểu String sang DateTime thì chuỗi đó phải đảm bảo đúng định dạng của DateTime
  • Tóm lại, ngoại trừ bạn muốn đưa các kiểu dữ liệu về String để xem còn không cần đảm bảo đúng định dạng của đối phương để convert sang.
- Một số định dạng của DateTime:
"19/12/2013"
"19/12/2013 9:50:35 AM"
......................................
......................................

- Một vài lỗi thường thấy:

string s = "day la doan text !";
int a = Convert.ToInt32(s); // Điều này sẽ gây ra lỗi !

Trong lớp Convert còn vài phương thức chuyển kiểu nữa khá là nhiều bạn có thể tìm hiểu thêm tại thư viện MSDN

- Visual Studio có tính năng hỗ trợ xem trước các khả năng của dòng lệnh rất tuyệt vời. Bạn có thể tận dụng để sử dụng:



- Cách sử dụng chỉ có vậy thôi, vì nó là một class static nên bạn dùng chính tên class truy xuất tới các phương thức của nó và các phương thức này trả về kết quả được convert tương đương.

2. Parse Và Parse-Exact

a. Parse

- Trước hết phương thức này nằm trong các Structure, Class đại diện cho kiểu dữ liệu như: Int16, Int32, Int64, Double, DateTime . . . Enum, XDocument (không phải các từ khóa định nghĩa kiểu dữ liệu: int, double) và nó sẽ không có trong Structure String. Bởi vì nhiệm vụ của phương thức parse chính là đưa một đoạn string về kiểu yêu cầu.
 (Lưu ý có một vài kiểu đặc biệt không có từ khóa ví dụ: DateTime, XDocument bạn sử dụng bình thường bằng cách gõ tên struct tương đương như từ khóa )
- Cách sử dụng thông thường nhất như sau:
// Parse String to Int32/Int64
string s = "123";
int i = Int32.Parse(s);
long j = Int64.Parse(s);
// Parse String to DateTime
string d = "19/12/2013";
DateTime date = DateTime.Parse(d);



- Với phương thức Parse này có 4 cách sử dụng dụng phổ biến:
  • Parse(String) : Chuyển đổi các chuỗi String đến một kiểu tương đương mà nó đại diện
  • Parse(String, NumberStyles) : Chuyển đổi các chuỗi String đến một kiểu tương đương mà nó đại diện với một "phong cách" cụ thể.
  • Parse(String, IFormatProvider) : Chuyển đổi các chuỗi String đến một kiểu tương đương mà nó đại diện với một định dạng "văn hóa, vùng miền" cụ thể.
  • Parse(String, NumberStyles, IFormatProvider): Chuyển đổi các chuỗi Stringđến một kiểu tương đương mà nó đại diện với một "phong cách" và một định dạng "văn hóa, vùng miền" cụ thể.
- Trong đó:
  • String: đoạn text cần chuyển đổi sang kiểu mới.
  • IFormatProvider: Định dạng theo vùng miền cụ thể.
  • NumberStyle:
- Tạo một giá trị IFomartProvider đơn giản như sau:
CultureInfo culture = new CultureInfo("en-US");
Sử dụng giá trị culture truyền vào phương thức Parse.
(Tìm hiểu thêm với từ khóa IFomartProvider )

- Tạo một giá trị NumberStyles đơn giản như sau:
NumberStyles styles = NumberStyles.AllowExponent;
hoặc có thể 
NumberStyles styles = NumberStyles.Number | NumberStyles.AllowCurrencySymbol;
Sử dụng giá trị styles truyền vào phương thức Parse.
(Tìm hiểu thêm với từ khóa:  NumberStyles)

- Đối với Enum có phần khác, nó dùng Parse để trả về giá trị là một Enum tương đương nó. Bạn có thể dùng cách này để xuất ra danh sách thành viên của Enum đó bao gồm cả String đại diện và Giá trị của nó.

class Program
{
enum Colors
{
Red = 1, Green = 2, Blue = 4, Yellow = 8
};
static void Main(string[] args)
{
foreach (string colorName in Enum.GetNames(typeof(Colors)))
{
Console.WriteLine("{0} = {1:d}", colorName, 
Enum.Parse(typeof(Colors), colorName));
}
Console.ReadKey();
/*
* Red = 1
* Green = 2
* Blue = 4
* Yellow = 8
*/
}
}

Hoặc trả về một giá trị là một đối tượng Enum tương đương:

class Program
{
enum Colors
{
Red = 1, Green = 2, Blue = 4, Yellow = 8
};
static void Main(string[] args)
{
Colors newColors = (Colors)Enum.Parse(typeof(Colors), "Red, Yellow");
Console.WriteLine("{0:d}", newColors);
Console.ReadKey();
/*
* 9
*/
}
}

Ở đây, newColors sẽ có giá trị của Red + Yellow cộng lại.

b. Parse - Exact
- Thường sử dụng cho định dạng ngày tháng: DateTime. Khi bạn muốn chuyển đổi định dạng ngày tháng một vùng nào đó về kiểu mà bạn muốn. Ví dụ chuyển kiểu ngày của Mỹ sang Việt Nam chẳng hạn.

3. TryParse & TryParse - Exact

a. TryParse
- Phương thức này trả về giá trị true/false và nó dùng để kiểm tra một giá trị String được chuyển đổi sang kiểu đối phương có thỏa mãn không.
- Bạn hãy sử dụng nó để kiểm tra một chuỗi có phải là số Int, Double, DateTime ..... hay không.
Ví dụ:


b. TryParse - Exact
- Phương thức này có mặt riêng biệt trong các struct như DateTime, DateTimeOffSet, Guid . . .
- Mục đích cũng tương tự TryParse trả về giá trị True/False nhưng mở rộng ra thêm nhiều lựa chọn tham số truyền vào

4. ToString

- Đây là phương thức sẵn có trong các kiểu dữ liệu, dùng nó để convert về một chuỗi string tương đương
- Bạn có thể sử dụng thêm các tham số: String, IFormatProvinder để định dạng đầu ra của chuỗi string tương đương.
IFormatProvinder: Là định dạng của một địa phương nào đó
String: Tham số này cho phép đầu ra của chuỗi có cách hiển thị như thế nào.
Ví dụ:


B. Explicit Conversions

1. Casting

(Đang biên tập)

C. Implicit Conversions

(Đang biên tập)

D. User Defined Conversion

(Đang biên tập)

thumbnail C# Programming: Convert, Parse - Exact, TryParse - Exact, Casting

data:label.name author

premiumpng.com

Design Publisher

Download 0
No comments
Template in .PSD format

MR Laboratory License

Free for personal purpose use . More info


Buy Now This Template

No comments:

Post a Comment

Commets Download Photoshop Actions, Lightroom Presets, PSD Template, Mockups, Stocks, Vectors, Fonts. Download free

Newer Post Older Post Home

Copyright © 2021 MR Laboratory All rights reserved.

Setting