Tải bản đầy đủ (.doc) (84 trang)

ĐỀ CƯƠNG C# docx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (950.57 KB, 84 trang )

LuongThanhBinh –
Đề 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
{
static void Main(string[] args)
{
//Vùng bắt đầu khai báo tên và các phương
thức trong lớp.
{
//Khai báo khác.
}
}
}
}
Lưu ý, mặc định không gian tên của Project chính là tên của Project, bạn có thể
thay đổi không gian tên này bằng cách khai báo lại hoặc cấu hình trong cửa sổ
thuộc tính của Project.
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;
1
LuongThanhBinh –
//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
{
static void Main(string[] args)
{
int i = 9;
int j = 10;
int tong = i + j;
Console.WriteLine("Tong = {0} + {1} = {2}",
i, j, tong);
Console.ReadKey();
}
}

}
Làm như sau:
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.
2
LuongThanhBinh –
Đ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
{
static void Main(string[] args)
{
TinhTong();
}
private static void TinhTong()
{
int i = 9;
int j = 10;
int tong = i + j;
Console.WriteLine("Tong = {0} + {1} = {2}",
i, j, tong);
Console.ReadKey();

}
}
}
Bài 3: Hoàn thành bài tập đơn giản sau:
3
LuongThanhBinh –
Đầu tiên bạn tạo class ConCho.cs
using System;
using System.Collections.Generic;
using System.Text;
namespace BaiOne
{
class ConCho
{
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; }

4
LuongThanhBinh –
set { tuoi = value; }
}
private string maulong;
public string Maulong
{
get { return maulong; }
set { maulong = value; }
}
}
}
Sau đó bạn tạo class Program.cs
using System;
using System.Collections.Generic;
using System.Text;
namespace BaiOne
{
class Program
{
static void Main(string[] args)
{
ConCho a = new ConCho();
a.Ten = "Ben";
a.Giong = "Nhat";
a.Tuoi = 1;
a.Maulong = "Trang Vang";
Console.WriteLine("Ten Con Cho: {0}",
a.Ten);
Console.WriteLine("Tuoi Con Cho: {0}",

a.Tuoi);
Console.WriteLine("Giong Con Cho: {0}",
a.Giong);
Console.WriteLine("Mau Long Con Cho: {0}",
a.Maulong);
Console.ReadKey();
}
}
}
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
5
LuongThanhBinh –
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:
using System;
using System.Collections.Generic;
using System.Text;
namespace A
{
class Class1
{
public string x;
public string y;
public void ReadValue()
{
Console.Write("Enter X string: ");
x = Console.ReadLine();

Console.Write("Enter Y String: ");
y = Console.ReadLine();
}
public void PrintValue()
{
Console.WriteLine("x: {0}, y: {1}", x, y);
}
}
}
Bạn nhập đoạn Code này vào rồi làm như sau:
6
LuongThanhBinh –
Mộ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:
using System;
using System.Collections.Generic;
using System.Text;
namespace A
{
class Class1
{
public string x;
private string y;
public string strY
{
get { return y; }
set { y = value; }
}
public void ReadValue()

{
Console.Write("Enter X string: ");
x = Console.ReadLine();
Console.Write("Enter Y String: ");
strY = Console.ReadLine();
}
7
LuongThanhBinh –
public void PrintValue()
{
Console.WriteLine("x: {0}, y: {1}", x,
strY);
}
}
}
Sau khi bạn nhấn Apply thì biến y đã được thay thế bằng biến strY như trong đoạn
Code mà chúng ta đã nhận được như ở trên. Nhấn Apply thì cửa sổ Preview
Reference Changes-Encapsulate Field đóng lại.
8
LuongThanhBinh –
Câ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ứa
cá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.
using System;

using System.Collections.Generic;
using System.Text;
namespace B
{
class LinhKien
{
string ten;
public string Ten
{
get { return ten; }
set { ten = value; }
}
float gia;
public float Gia
{
get { return gia; }
set { gia = value; }
}
public LinhKien() { }
public LinhKien(string t, float g)
{
Ten = t;
Gia = g;
}
}
}
Bạn làm như sau để có được Class IlinhKien.cs:
9
LuongThanhBinh –
Sau đó 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:
10
LuongThanhBinh –
using System;
namespace B
{
interface ILinhKien
{
float 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:
using System;
using System.Collections.Generic;
using System.Text;
namespace B
{
class LinhKien : ILinhKien
{
string ten;
public string Ten
{
get { return ten; }
set { ten = value; }
}
float gia;
public float Gia
{

get { return gia; }
set { gia = value; }
}
public LinhKien() { }
public LinhKien(string t, float g)
{
Ten = t;
Gia = g;
}
}
}
Thế là hoàn thành yêu cầu của đề bài. ^^!.
11
LuongThanhBinh –
Câ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.
12
LuongThanhBinh –
Như 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):
13
LuongThanhBinh –

Và 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.
Từ khóa Public.
Nếu biến khai báo có từ khóa là public thì không giới hạn quyền truy cập từ bên
ngoài đến chúng. Chẳng hạn, bạn khai báo biến qtty và price trong Class1 như ví
dụ sau đây:
using System;
using System.Collections.Generic;
using System.Text;
namespace Public
{
class Class1
{
//Khai báo hai biến public.
public int qtty = 0;
public float price = 0;
float tax = 0;
}
}
Sau đó khai báo và khởi tạo đối tượng Class1 rồi truy cập đến hai biến qtty và
price trong phương thức Main như ví dụ 4-11.
14
LuongThanhBinh –
using System;

using System.Collections.Generic;
using System.Text;
namespace Public
{
class Program
{
static void Main(string[] args)
{
//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);
Console.WriteLine("Amount = {0}", cls.qtty
* cls.price);
Console.ReadLine();
}
}
}
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:
using System;

using System.Collections.Generic;
using System.Text;
namespace Public
{
public class Class1
{
public int qtty = 0;
public float Price = 0;
float tax = 0;
//Khai báo biến tầm vực là protected.
15
LuongThanhBinh –
protected float amount = 0;
public void sum()
{
tax = qtty * Price * 0.1f;
//gán giá trị cho biến.
amount = qtty * Price - tax;
Console.WriteLine("Tax = {0}", tax);
Console.ReadLine();
}
}
}
Khởi tạo biến Class2:
using System;
using System.Collections.Generic;
using System.Text;
namespace Public
{
class Class2:Class1

{
public void print()
{
Console.WriteLine("Amount = {0}", amount);
}
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace Public
{
class Class2:Class1
{
public void print()
{
Console.WriteLine("Amount = {0}", amount);
}
}
}
Gọi hàm ra ở lớp Program:
using System;
using System.Collections.Generic;
16
LuongThanhBinh –
using System.Text;
namespace Public
{
class Program
{

static void Main(string[] args)
{
//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.
cls.sum();
//Gọi phương thức trong Class2.
cls.print();
Console.ReadLine();
}
}
}
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 internalvariable
bạn thêm tập tin Class1.cs và khai báo biến Age như sau:
Class1.cs:
using System;
using System.Collections.Generic;
using System.Text;
namespace Internal
{
class Class1
{

internal int Age = 30;
}
}
17
LuongThanhBinh –
Kế đế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:
using System;
using System.Collections.Generic;
using System.Text;
namespace Internal
{
class Program
{
static void Main(string[] args)
{
Class1 cls = new Class1();
cls.Age = 35;
Console.WriteLine("Age = {0}", cls.Age);
Console.ReadLine();
}
}
}
Nếu ta truy xuất File .DLL thì nó sẽ báo lỗi ngay vì để truy cập vào biến internal
thì bản thân Class khai báo sử dụng Class chứa biến đó cùng chung 1 Assembly
(tức có nghĩa là sử dụng chung một file .DLL).
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;
18
LuongThanhBinh –
namespace 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);
}
}
}
Program.cs:
using System;

using System.Collections.Generic;
using System.Text;
namespace Private
{
class Program
{
static void Main(string[] args)
{
//Khai báo và khởi tạo đối tượng Class1.
Class1 cls = new Class1();
cls.Sum();
Console.ReadLine();
}
}
}
Ta thấy thì khi khai báo ở lớp Program.cs thì không thể truy xuất trực tiếp
được biến Private (Hình dưới ta không thấy biến qtty và biến price đâu cả).
19
LuongThanhBinh –
Câ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.
using System;
using System.Collections.Generic;
using System.Text;
namespace BienCucBo
{
class Program
{

//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 và khởi tạo đối tượng Program.
Program cls = new Program();
//Gọi phương thức Sum.
cls.Sum();
Console.ReadLine();
}
//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ần
này chúng ta chỉ tìm hiểu từ khóa static dùng khi khai báo biến.
20

LuongThanhBinh –
Chú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:
using System;
using System.Collections.Generic;
using System.Text;
namespace Bai
{
class Program
{
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();
}
}
}
Nếu khai báo biến trong Class không sử dụng từ khóa static thì biến đó có thể truy
cập nếu bạn khai báo và khởi tạo lớp đó. Trong trường hợp, bạn muốn truy cập
đến biến của Class mà không cần khởi tạo nó thì biến đó là static.
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;
21
LuongThanhBinh –
namespace 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.
using System;
using System.Collections.Generic;
using System.Text;
namespace Bai
{
class Program
{
static void Main(string[] args)
{
Class1 cls = new Class1();
Console.WriteLine("Tax = {0}", cls.tax);
//Khai báo gián tiếp

Console.WriteLine("Price = {0}",
Class1.price); //Khai báo trực tiếp.
Console.ReadLine();
}
}
}
Kết quả như hình dưới:
22
LuongThanhBinh –
Câ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:
Class1.cs:
using System;
using System.Collections.Generic;
using System.Text;
namespace Bai
{
public class Class1
{
public const double PI = 3.14;
public const string company = "Thanh Binh",
email = "";
}
}
Program.cs:
using System;
using System.Collections.Generic;

using System.Text;
namespace Bai
{
class Program
{
static void Main(string[] args)
{
Class1 cls = new Class1();
Console.WriteLine("PI = {0}", Class1.PI);
Console.WriteLine("Company = {0}",
Class1.company);
Console.WriteLine("Email = {0}",
Class1.email);
Console.ReadLine();
}
}
23
LuongThanhBinh –
}
Bạ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:

Class1.cs:
using System;
using System.Collections.Generic;
using System.Text;
namespace Bai
{
public enum Days
{
Sun = 1, //Nếu chỗ này không khai báo là = 1
thì mặc định nó sẽ là = 0;
Mon,
Tue,
Wed,
Thu,
Fri,
Sat
};
}
Program.cs:
using System;
using System.Collections.Generic;
using System.Text;
namespace Bai
{
class Program
24
LuongThanhBinh –
{
static void Main(string[] args)
{

//Chuyển đổi kiểu dữ liệu
int x = (int)Days.Sat;
int y = (int)Days.Sun;
Console.WriteLine("Sat = {0}", x);
Console.WriteLine("Sun = {0}", y);
Console.ReadLine();
}
}
}
Kết quả:
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ực
hiệ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:
using System;
//Sử dụng định danh.
using x = System.Console;
namespace Bai
{
class Program
{
static void Main(string[] args)
{
//Khai báo biến

int i = 10;
int j = 3;
//In kết quả
x.WriteLine("{0} + {1} = {2}", i, j, i +
j);
25

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×