FirstApplication trong Solution hiện hành.Kế đến bạn khai báo biến Public và sửdụng 2 biến đó trong 2 phương thức như ví dụ sau đây: } } Bạn nhập đoạn Code này vào rồi làm như sau:... Kế
Trang 1Đề Cương C#
Câu 1: Cấu trúc cơ bản của chương trình C#.
//Vùng bắt đầu khai báo, sử dụng không gian tên
using System;
using System.Collections.Generic;
using System.Text;
//Vùng kết thúc sử dụng không gian tên
//Khai báo không gian tên của ứng dụng
namespace OnTapFull
{
//Vùng bắt đầu khai báo các class
static class Program
Câu 2: Thực đơn Refactor.
Với số lượng lớn mã chương trình trong 1 Project, khi có nhu cầu về thay thế, chuyển đổi tầm vực của biến, sắp xếp thứ tự tham số,… thì bạn sử dụng dạng kỹ thuật Refactor từ thực đơn của Visual Studio NET 2005
Refactor cung cấp các kỹ thuật như: Extract Method, Encapsulate Field, Extract Interface, Reorder Parameters, Remove Parameters, Rename và Promote Local Variable to Parameters
Extract Method: Cho phép định nghĩa 1 phương thức mới dựa trên đoạn chương
trình đang chọn, sau đó khai báo để gọi phương thức vừa tạo ngay trên đoạn mã đãtách thành phương thức
Bạn hãy thực hành với ví dụ dưới đây:
//Vùng bắt đầu khai báo, sử dụng không gian tên
using System;
using System.Collections.Generic;
using System.Text;
Trang 2//Vùng kết thúc sử dụng không gian tên.
//Khai báo không gian tên của ứng dụng
namespace OnTapFull
{
//Vùng bắt đầu khai báo các class
static class Program
Sau đó 1 cái table nữa hiện ra yêu cầu nhập tên hàm muốn tạo ra:
Bạn nhập tên của hàm muốn tạo và nhấp OK
Trang 3Đoạn Code sẽ như thế này:
//Vùng bắt đầu khai báo, sử dụng không gian tên
using System;
using System.Collections.Generic;
using System.Text;
//Vùng kết thúc sử dụng không gian tên
//Khai báo không gian tên của ứng dụng
namespace OnTapFull
{
//Vùng bắt đầu khai báo các class
static class Program
Trang 4Đầu tiên bạn tạo class ConCho.cs
private string ten;
public string Ten
{
get { return ten; }
set { ten = value; }
}
private string giong;
public string Giong
{
get { return giong; }
set { giong = value; }
}
private int tuoi;
public int Tuoi
{
get { return tuoi; }
Trang 5set { tuoi = value; }
}
private string maulong;
public string Maulong
{
get { return maulong; }
set { maulong = value; }
a.Maulong = "Trang Vang";
Console.WriteLine("Ten Con Cho: {0}",
Thế là xong yêu cầu bài toán ^^!.
Câu 4: Encapsulate Filed?
Encapsulate Field chuyển một biến từ tầm vực Public (công khai) sang tầm vực cánhân (private) bằng thuộc tính NET Ví dụ bạn thêm Class2 vào Project có tên
Trang 6FirstApplication trong Solution hiện hành.Kế đến bạn khai báo biến Public và sửdụng 2 biến đó trong 2 phương thức như ví dụ sau đây:
}
}
Bạn nhập đoạn Code này vào rồi làm như sau:
Trang 7Một cái bảng hiện ra, bạn làm tiếp như sau:
Nhấp OK, một cái bảng nữa hiện ra bạn làm tiếp như hình dưới thì ta sẽ có được đoạn Code sau đây:
Trang 8public void PrintValue()
Trang 9Câu 5: Extract Interface?
Trong khi kỹ thuật Extract Method là trích 1 đoạn mã đang chọn thành 1 phương thức nào đó rồi thay thế đoạn mã bởi khai báo gọi chính phương thức vừa tạo ra thì kỹ thuật Extract Interface dùng để khai báo giao tiếp (Interface) cho những phương thức trong class rồi tự động khai báo kế thừa Interface đó trong Class chứacác phương thức vừa chọn
Giả sử, thêm mới Class vào Project có tên FirstApplication và đặt tên Class2 Kế đến, bạn khai báo hai biến public và sử dụng hai biến đó trong hai phương thức như ví dụ sau đây
get { return ten; }
set { ten = value; }
}
float gia;
public float Gia
{
get { return gia; }
set { gia = value; }
Trang 10Sau đó bạn nhấp Select All và nhấp OK:
Sau khi hoàn thành thì ta sẽ có được đoạn Code sau:
Trang 11float Gia { get; set; }
string Ten { get; set; }
}
}
Sau khi thực hiện xong thì kỹ thuật này tự động thêm khai báo kế thừa từ
Interface có tên là IlinhKien.cs như sau:
get { return ten; }
set { ten = value; }
}
float gia;
public float Gia
{
get { return gia; }
set { gia = value; }
Trang 12Câu 6: Biên dịch đoạn mã cs sau ra file exe từ tiện ích CSC.exe của
Windows.
Bước 1: Mở Notepad và nhập đoạn Code này vào sau đó lưu đưới đuôi cs.
Bước 2: Bạn lưu File này vào trong một ổ đĩa nào đó ví dụ như bạn bỏ nó vào
ổ D: như cây thư mục sau (File Bai.cs):
Bước 3: Sau đó bạn biên dịch bằng cách: Start > All Programs > Microsoft Visual Studio 2005 > Visual Studio Tools > Visual Studio 2005 Command Prompt.
Trang 13Như hình sau:
Một màn hình đen thui hiện ra, bạn làm như hình dưới, để biết tham số các lệnh thì bạn làm như sau (Bạn nhập CSC /?, window sẽ cho bạn biết tất cả các tham số dòng lệnh):
Trang 14Và bây giờ bạn chỉ việc nhập vào lệnh như sau:
Thế là bạn đã biết cách biên dịch từ file cs ra file exe như thế đó ^_^!.
Câu 7: Tầm vực của biến?
Tầm vực của biến phụ thuộc vào một trong từ khóa Public, Protected, internal, private bạn chỉ định trước tên biến.Mặc định không khai báo từ khóa trước biến nằm ngoài phương thức là Private
Lưu ý, các từ khóa public, protected, internal, private có thể sử dụng các phương thức hay hằng, enum
//Khai báo hai biến public
public int qtty = 0;
public float price = 0;
Trang 15//Khai báo khởi tạo đối tượng Class 1.
Class1 cls = new Class1();
//Truy cập đến hai biến public
cls.qtty = 10;
cls.price = 10.5f;
//In giá trị hai biến
Console.WriteLine("Qty = {0}, Price = {1}",cls.qtty, cls.price);
Câu 8: Từ khóa Protected?
Nếu sử dụng từ khóa protected trước biến thì giới hạn quyền truy cập trong class
và những class kế thừa class chứa đựng biến đó
Ví dụ, bạn khai báo biến amount và protected trong Class1 Kế đến bạn khai báo phương thức Sum để tính toán giá trị rồi gán vào vho biến tax và amount như ví dụdưới đây:
Khởi tạo biến Class1:
public int qtty = 0;
public float Price = 0;
float tax = 0;
//Khai báo biến tầm vực là protected
Trang 16protected float amount = 0;
public void sum()
{
tax = qtty * Price * 0.1f;
//gán giá trị cho biến
amount = qtty * Price - tax;
Trang 17//Khai báo và khởi tạo đối tượng Class2
Class2 cls = new Class2();
//Truy cập 2 biến public trong Class1
cls.qtty = 10;
cls.Price = 10.5f;
//In giá trị của hai biến
Console.WriteLine("Qty = {0}, Price = {1}",cls.qtty, cls.Price);
//Gọi phương thức trong Class1
Thế là xong yêu cầu của bài toán ^^!.
Câu 9: Từ khóa Internal?
Giới hạn truy cập trong Assembly hiện hành Ví dụ, trong thư mục internalvariablebạn thêm tập tin Class1.cs và khai báo biến Age như sau:
Trang 18Kế đến, bạn biến dịch Class1 này ra thành tập tin DLL từ cửa sổ Command
Prompt như hình dưới:
Sau đó tạo mới tập tin Class3.cs trong thư mục internalvariable ròi khai báo và khởi tạo đối tượng Class1 như ví dụ dưới đây:
Câu 10: Từ khóa Private?
Từ khóa Private ấn định biến cho phép truy cập chỉ bên trong Class khai báo nó.Ngoài ra, nếu biến khai báo bên trong Class không ấn định 1 trong 4 từ khóa public, private, protected, hay internal thì mặc định là Private
Chẳng hạn bạn khai báo biến qtty và price trong Class1 của Project mang tên privatevariable, rồi sau đó định nghĩa phương thức Sum để tính giá trị tax và amount như ví dụ dưới đây`:
Class1.cs:
using System;
using System.Collections.Generic;
using System.Text;
Trang 19namespace Private
{
class Class1
{
//Khai báo biến Private
private int qtty = 100;
//Mặc định là private
float price = 20.5f;
public void Sum()
{
float tax = qtty * price * 0.1f;
float amount = qtty * price - tax;
Console.WriteLine("Tax = {0}", tax);
Console.WriteLine("Amount = {0}", amount); }
Trang 20Câu 11: Biến cục bộ:
Biến cục bộ là biến có tầm vực ngay bên trong phương thức mà nó được khai báo Chẳng hạn, bạn khai báo hai biến cục bộ có tên tax và amount trong phương thức Main như ví dụ dưới đây
//Khai báo phương thức Sum
public void Sum()
{
Class1 cls = new Class1();
//Khai báo 2 biến cục bộ
float tax = cls.qtty * cls.price * 0.1f; float amount = cls.qtty * cls.price - tax; Console.WriteLine("Tax = {0}", tax);
Console.WriteLine("Amount = {0}", amount); }
//Khai báo phương thức Main()
static void Main(string[] args)
//Khai báo biến Private
private int qtty = 100;
float price = 20.5f;
}
}
Câu 12: Từ khóa Static?
Từ khóa Static sử dụng cho Class, phương thức (Method), Constructor, thuộc tính (Property), biến cố (Event) và biến Bạn có thể tìm hiểu chi tiết về từ khóa static dùng cho class trong chương trình bày lớp, phương thức và thuộc tính Trong phầnnày chúng ta chỉ tìm hiểu từ khóa static dùng khi khai báo biến
Trang 21Chúng ta bắt đầu từ phương thức Main của chương trình C#, bên trong phương thức Main có truy cập đến hai biến khai báo bên ngoài phương thức Main là qtty
và price như ví dụ sau:
static int qtty = 100; //Nếu không có biến
static chỗ này thì nó sẽ báo lổi ngay, vì không thể truy cập vào hai biến nằm ngoài phương thức Main này được, như hình dưới
static float price = 20.5f;
static void Main(string[] args)
{
float tax = qtty * price * 0.1f;
float amount = qtty * price - tax;
Console.WriteLine("Tax = {0}", tax);
Console.WriteLine("Amount = {0}", amount); Console.ReadLine();
Ví dụ, bạn khai báo hai biến stattic là qtty và price trong khi đó biến tax là biến public không dùng từ khóa static như ví dụ sau:
using System;
using System.Collections.Generic;
using System.Text;
Trang 22namespace Bai
{
class Class1
{
public static int qtty = 10;
public static float price = 100;
public float tax = 0.1f;
}
}
Trong phương thức Main, bạn có thể truy cập đế biên tax khi khai báo và khởi tạo đối tượng Class1, nghĩa là sau khi nhấn phím dấu chấm, tên biến tax xuất hiện trong cửa sổ Intellisence như hình dưới
Trang 23Câu 13: Hằng và Enum?
1, Hằng: Từ khóa const dùng để chỉ định khai báo trường hay một biến cục bộ với
giá trị cho trước và không thể thay đổi trong quá trình thực thi
Thông thường khai báo hằng khi giá trị nào đó không thay đổi, ví dụ bạn khai báo hằng nắm giữ giá trị là số PI bằng 3.14 như ví dụ dưới đây:
public const double PI = 3.14;
public const string company = "Thanh Binh", email = "redhacker3824@gmail.com";
Trang 24Bạn phải truy cập trực tiếp từ Class1 thì mới có thể gọi hằng ra sử dụng được Kết quả như sau:
2, Enum: Từ khóa Enum sử dụng để định nghĩa một bảng dạng liệt kê
(enumeration) các hằng có kiểu dữ liệu khác nhau, bảng liệt kê này còn được gọi
là enumerator list
Mọi phẩn tử trong enumeration đều có kiểu dữ liệu, bạn có thể gán giá trị bất kỳ làkiểu số tổng quát (integral) ngoài trừ kiểu char Nếu phần tử trong enumeration không khai báo kiểu thì kiểu dữ liệu mặc định là int Nếu không khai báo giá trị thìgiá trị của phần tử thứ nhất mặc định là 0 các phần tử kế tiếp có giá trị tăng lên 1
Ví dụ, bạn khai báo enum là 7 ngày trong tuần, phần tử đầu tiên sẽ có giá trị mặc định là 0 như sau:
Trang 25{
static void Main(string[] args)
{
//Chuyển đổi kiểu dữ liệu
int x = (int)Days.Sat;
int y = (int)Days.Sun;
Câu 14: Phép toán và chuyển đổi kiểu dữ liệu?
C# cung cấp tập các phép toán bằng các ký tự hiếm tượng trưng cho phép bạn thựchiện các biểu thức tính toán Phép toán trong C# chia thành các nhóm như: phép toán số học (arithmetic), logical, gán, so sánh,… Chẳng hạn như: = =, !=, <, >, <=,
>=, binary +, binary -, ^, &, |, ~, ++, và sizeof()
Ngoài ra, một số phép toán có thể cài đặt chồng (overloading) sẽ được trình bày trong cuốn sách “Lập trình hướng đối tượng”
1.1, Phép toán Arithmetic (Phép toán số học)
Phép toán số học bao gồm 5 phép toán chính: +, -, *, /, % Ví dụ, bạn khai báo mộtđoạn chương trinh sử dụng các phép toán số học như ví dụ dưới đây:
Trang 26x.WriteLine("{0} - {1} = {2}", i, j, i - j);
x.WriteLine("{0} * {1} = {2}", i, j, i * j);
x.WriteLine("{0} / {1} = {2}", i, j, i / j);
x.WriteLine("{0} % {1} = {2}", i, j, i % j);
C# cung cấp các phép toán logic ứng với các ký hiệu tượng trưng như: &, |, ^, !, ~,
&&, ||, true, false Thường các phép toán này được sử dụng trong các phát biểu điều khiển
Chẳng hạn, bạn khai báo một số biến và sử dụng các phép toán như ví dụ sau:
Trang 27x.Write("Enter the second number: ");
1.3: Phép toán tăng giảm:
Phép toán tăng giảm cho phép bạn tăng hoặc giảm giá trị hiện tại đi giá trị là 1 Ví
dụ bạn có thể tăng biến i lên 1 và giảm biến j xuống 1 như ví dụ sau đây:
x.WriteLine("i increment 1 = {0}", i);
//Biến j giảm giá trị đi 1
Trang 28Kết quả sau khi biên dịch thì nó như sau:
Cả 2 biến đều có biến đổi:
Đối với biến i do có phép toán i++ nên tăng thêm đơn vị,biến j do chịu phép toán giảm nên bị trừ đi 1 đơn vị
1.4, Phép toán quan hệ:
Phép toán quan hệ (Relational) bao gồm các phép toán như: = =, !=, <, >, >=, <= thường sử dụng các phát biểu điều khiển Ví dụ, bạn khai báo sử dụng các phép toán trên như sau:
Trang 291.5, Phép toán gán:
Phép toán gán (Assignment) trong C# bao gồm: = +=, -=, *=, /=, %=, &=, |=, ^=,
<<=, >>=, ?? Trong đó phép toán = dùng để gán giá trị cho biến hay biểu thức, +=, -=, *=, /=, %=, &=, |= dùng để gán tiếp giá trị sau một phép tính tương ứng cho biến Chẳng hạn, += cho phép gán thêm giá trị sau phép cộng vào giá trị đang
Trang 30Lưu ý trong chương trước chúng ta đã tìm hiểu kiểu dữ liệu Nullable, khi làm việc với biến có kiểu này bạn có thể sử dụng phép toán gán ?? để gán giá trị mặc định cho biến khi giá trị của biến đó là null.
Ví dụ bạn khai báo biến xInt có kiểu Nullable với giá trị khởi tạo là null, sau đó khai báo biến yInt có kiểu int gán bằng giá trị của biến xInt, nếu biến xInt là null thì giá trị của yInt là 10 như ví dụ sau:
//Khai báo biến kiểu Nullable của int
int? xInt = null;
//Khai báo biến y kiểu int gán giá trị từ biến x
int yInt = xInt ?? 10;
Và kết quả nó sẽ trả về 10 như hình sau:
1.6, Phép toán chuyển kiểu dữ liệu:
Phép toán chuyển kiểu dữ liệu () được sử dụng để ép kiểu dữ liệu hiện hành của đối tượng sang kiểu khác Chẳng hạn, bạn khai báo biến có kiểu dữ liệu là object, sau khi gán giá trị cho biến này là 10, bạn có thể ép kiểu của biến này sang kiểu sốnguyên như ví dụ sau:
Object: Từ khóa này có ý nghĩa được thể hiện như sau:
Trang 31Support all classes in the NET Framework class hierarchy and provides low-level services to derived classes This is the ultimate base class of all classes in the NET Framework, it is the root of the type hierarchy.
Những cái này ở đâu ra, thì bạn xem hình sau:
Bạn muốn xem hướng dẫn cách dùng hàm thì để chuột vào cái hàm đó, sau đó cỡ khoảng 2s thì wizard hướng dẫn tự động xuất hiện, hướng dẫn cho bạn cách sử dụng hàm đó và khai báo nó lấy ở đâu ra
Trang 32int i = (int)cls.getObject();
Lưu ý, phép toán này chỉ hợp lệ khi biến bạn cần ép kiểu đang nắm giữ giá trị
1.7, Phép toán điều kiện:
Phép toán điều kiện ?: Sử dụng trong trường hợp phát biểu điều khiển if…else chỉ
có một câu lệnh Ví dụ, bạn có khai báo như sau:
Trang 33Phép toán :: dùng để định danh ứng với nhận dạng cho không gian tên Ví dụ, tạo
Project rồi đặt tên AliasOperator, bên trong Project này bạn thêm Class và đặt tên System như ví dụ dưới đây
Khai báo biến trùng tên với đối tượng:
Trang 34Khi biên dịch đoạn chương trình trên, lỗi phát sinh do không tìm thấy 2 phương thức WriteLine và ReadLine của biến Để sử dụng 2 phương thức này của đối tượng Console, bạn cần chỉ định nhận dạng không gian tên như ví dụ dưới đây:
global::System.Console.ReadLine();
}
}
}
Kết quả cuối cùng như sau:
1.9, Phép toán khởi tạo:
Phép toán new dùng để khởi tạo đối tượng Ví dụ, bạn khai báo đoạn chương trình
để liệt kê danh sách tên, ngày tạo, số lượng tập tin của các thư mục trong ổ đĩa C:\ bằng cách sử dụng đối tượng DirectoryInfo như ví dụ sau:
Khởi tạo đối tượng DirectoryInfo:
using System;
using System.IO;
Trang 351.10, Phép toán kiểm tra tràn số:
Phép toán kiểm tra tràn số bao gồm 2 phép toán chính là: checked và unchecked Trong đó, phép toán checked cho phép kiểm tra tràn số khi thực hiện các phép toán số học ứng với toán hạng là số hoặc chuyển đổi giữa chúng
Phép unchecked dùng để chỉ thị phép toán hay biểu thức không cần kiểm tra tràn
số trong quá trinh thực hiện tính toán hay chuyển đổi
Trang 36Normal1 nor = new Normal1();
Console.WriteLine("Normal Output Value is: {0}", nor.Normal());
Console.ReadLine();
}
}
}
Và kết quả như sau:
Sử dung phép toán checked:
using System;
using System.Collections.Generic;
using System.Text;
namespace Normal
Trang 37Khi thưc thi chương trình chính và gọi phương thức CheckedOverFlow thì kết quảhiển thị như trên.
Trang 38//Khai báo khởi tạo mảng kiểu object.
object[] objArray = new object[5];
//Gán giá trị cho từng phần tử mảng
Trang 39objArray[0] = new Class1();
objArray[1] = "Ngo Thi Yen Phuong";
objArray[2] = "C# 2005";
objArray[3] = 100;
objArray[4] = new Class1();
for (int i = 0; i < objArray.Length; i++) {
//Gán biến chuỗi bằng phần tử mảng thứ i
string s = objArray[i] as string;
else
{
Console.WriteLine("Not a string"); }
Phép toán is kiểm tra đối tượng có giống như kiểu dữ liệu mà bạn muốn so sánh
Ví dụ, thiết kế Form bao gồm các điều khiển (Control) trên Form như hình sau:
Để xóa tất cả dữ liệu mà người dùng đã nhập, bạn có thể khai báo đoạn chương trình trong biến cố Click của nút Reset Bằng cách sử dụng phép toán is để xét các điều khiển là TextBox thì gán thuộc tính Text bằng rỗng, nếu điều khiển là
RadioButton thì gán thuộc tính Checked bằng true
Thiết kế Form như sau:
Thiết kế nút Reset làm sao khi Click vào nó thì nội dung người dùng nhập vào đềubiến mất như Form sau:
Trang 40Sau khi ấn Reset nó trở thành như sau: