• Trang chủ
  • Tin công nghệ
    sublime-text-3

    SublimeText: 10 plugin hổ trợ JavaScript

    Hướng dẫn sử dụng Layout trong Android và thiết kế giao diện hổ trợ nhiều loại màn hình

    Những tính năng mới trong C# 7

    Hướng dẫn sử dụng Layout trong Android và thiết kế giao diện hổ trợ nhiều loại màn hình

    Những tính năng mới trong C# 6

    5 Design Pattern mà developer nên biết

    5 Design Pattern mà developer nên biết

    Live Stream và những điều có thể bạn chưa biết

    Live Stream và những điều có thể bạn chưa biết

    10 ngôn ngữ lập trình được sử dụng nhiều nhất để đóng góp mã nguồn mở

    10 ngôn ngữ lập trình được sử dụng nhiều nhất để đóng góp mã nguồn mở

    Machine Learning góp phần cải thiện chiến lược Digital Marketing của bạn như thế nào?

    Machine Learning góp phần cải thiện chiến lược Digital Marketing của bạn như thế nào?

    7 công nghệ nổi bật phát triển mạnh năm 2018

    7 công nghệ nổi bật phát triển mạnh năm 2018

    Bitcoin đã được khai thác 80% tổng lượng

    Bitcoin đã được khai thác 80% tổng lượng

  • Lập trình Android
  • Java & Java EE
  • Thiết kế web
    Hướng dẫn thêm nút chia sẻ ZALO cho website

    Hướng dẫn thêm nút chia sẻ ZALO cho website

    sublime-text-3

    SublimeText: 10 plugin hổ trợ JavaScript

    sublime-text-3

    Sublime Text 3 và các plugin cần thiết cho lập trình Laravel

    Top xu hướng thiết kế web cho năm 2017

    Top xu hướng thiết kế web cho năm 2017

    Tạo Layout đơn giản với DIV và CSS

    Tạo Layout đơn giản với DIV và CSS

    Tạo ứng dụng Swing bằng Netbean

    Backlink là gì? Cách tạo backlink?

    Tạo ứng dụng Swing bằng Netbean

    Giới thiệu về HTML5 và CSS3

  • Lập trình C#
    Hướng dẫn sử dụng Layout trong Android và thiết kế giao diện hổ trợ nhiều loại màn hình

    Tag Helpers trong ASP.NET Core MVC

    Hướng dẫn sử dụng Layout trong Android và thiết kế giao diện hổ trợ nhiều loại màn hình

    Những tính năng mới trong C# 7

    Hướng dẫn sử dụng Layout trong Android và thiết kế giao diện hổ trợ nhiều loại màn hình

    Những tính năng mới trong C# 6

    Hướng dẫn sử dụng Crystal Report với Visual Studio

    Hướng dẫn sử dụng Crystal Report với Visual Studio

    7 thủ thuật Windows Group Policy trong Windows 10

    7 thủ thuật Windows Group Policy trong Windows 10

    5 cách để học lập trình nhanh hơn

    Ví dụ minh họa Client-Server trong C#

    Remotting

    Remotting

    Debug chương trình với VS.NET

    Debug chương trình với VS.NET

    Tạo Form có hình dạng bất kỳ trong C#

    Tạo Form có hình dạng bất kỳ trong C#

  • Lập trình PHP
    php-mysql

    Sử dụng mệnh đề WHERE của câu lệnh SELECT trong PHP và MySQL

    php-mysql

    Sử dụng câu lệnh SELECT trong PHP và MySQL

    php-mysql

    Lấy giá trị của cột tự tăng của record vừa được thêm mới

    php-mysql

    MySQL prepared statements trong PHP

    php-mysql

    Sử dụng INSERT trong MySQL & PHP

    php-mysql

    Tạo cơ sở dữ liệu và bảng trong MySQL bằng PHP

    sublime-text-3

    Sublime Text 3 và các plugin cần thiết cho lập trình Laravel

    WordPress-Cách chia bài viết dài thành nhiều trang

    WordPress-Làm nổi bật comment của tác giả bài viết

No Result
View All Result
Học Lập Trình
  • Trang chủ
  • Tin công nghệ
    sublime-text-3

    SublimeText: 10 plugin hổ trợ JavaScript

    Hướng dẫn sử dụng Layout trong Android và thiết kế giao diện hổ trợ nhiều loại màn hình

    Những tính năng mới trong C# 7

    Hướng dẫn sử dụng Layout trong Android và thiết kế giao diện hổ trợ nhiều loại màn hình

    Những tính năng mới trong C# 6

    5 Design Pattern mà developer nên biết

    5 Design Pattern mà developer nên biết

    Live Stream và những điều có thể bạn chưa biết

    Live Stream và những điều có thể bạn chưa biết

    10 ngôn ngữ lập trình được sử dụng nhiều nhất để đóng góp mã nguồn mở

    10 ngôn ngữ lập trình được sử dụng nhiều nhất để đóng góp mã nguồn mở

    Machine Learning góp phần cải thiện chiến lược Digital Marketing của bạn như thế nào?

    Machine Learning góp phần cải thiện chiến lược Digital Marketing của bạn như thế nào?

    7 công nghệ nổi bật phát triển mạnh năm 2018

    7 công nghệ nổi bật phát triển mạnh năm 2018

    Bitcoin đã được khai thác 80% tổng lượng

    Bitcoin đã được khai thác 80% tổng lượng

  • Lập trình Android
  • Java & Java EE
  • Thiết kế web
    Hướng dẫn thêm nút chia sẻ ZALO cho website

    Hướng dẫn thêm nút chia sẻ ZALO cho website

    sublime-text-3

    SublimeText: 10 plugin hổ trợ JavaScript

    sublime-text-3

    Sublime Text 3 và các plugin cần thiết cho lập trình Laravel

    Top xu hướng thiết kế web cho năm 2017

    Top xu hướng thiết kế web cho năm 2017

    Tạo Layout đơn giản với DIV và CSS

    Tạo Layout đơn giản với DIV và CSS

    Tạo ứng dụng Swing bằng Netbean

    Backlink là gì? Cách tạo backlink?

    Tạo ứng dụng Swing bằng Netbean

    Giới thiệu về HTML5 và CSS3

  • Lập trình C#
    Hướng dẫn sử dụng Layout trong Android và thiết kế giao diện hổ trợ nhiều loại màn hình

    Tag Helpers trong ASP.NET Core MVC

    Hướng dẫn sử dụng Layout trong Android và thiết kế giao diện hổ trợ nhiều loại màn hình

    Những tính năng mới trong C# 7

    Hướng dẫn sử dụng Layout trong Android và thiết kế giao diện hổ trợ nhiều loại màn hình

    Những tính năng mới trong C# 6

    Hướng dẫn sử dụng Crystal Report với Visual Studio

    Hướng dẫn sử dụng Crystal Report với Visual Studio

    7 thủ thuật Windows Group Policy trong Windows 10

    7 thủ thuật Windows Group Policy trong Windows 10

    5 cách để học lập trình nhanh hơn

    Ví dụ minh họa Client-Server trong C#

    Remotting

    Remotting

    Debug chương trình với VS.NET

    Debug chương trình với VS.NET

    Tạo Form có hình dạng bất kỳ trong C#

    Tạo Form có hình dạng bất kỳ trong C#

  • Lập trình PHP
    php-mysql

    Sử dụng mệnh đề WHERE của câu lệnh SELECT trong PHP và MySQL

    php-mysql

    Sử dụng câu lệnh SELECT trong PHP và MySQL

    php-mysql

    Lấy giá trị của cột tự tăng của record vừa được thêm mới

    php-mysql

    MySQL prepared statements trong PHP

    php-mysql

    Sử dụng INSERT trong MySQL & PHP

    php-mysql

    Tạo cơ sở dữ liệu và bảng trong MySQL bằng PHP

    sublime-text-3

    Sublime Text 3 và các plugin cần thiết cho lập trình Laravel

    WordPress-Cách chia bài viết dài thành nhiều trang

    WordPress-Làm nổi bật comment của tác giả bài viết

No Result
View All Result
Học Lập Trình
No Result
View All Result

Indexer với chỉ số kiểu số nguyên

qadmin by qadmin
16/09/2013
in Lập trình C#
0 0
0
5 cách để học lập trình nhanh hơn
0
SHARES
68
VIEWS
Share on FacebookShare on Twitter

Đôi lúc, bạn muốn truy xuất một danh sách nằm trong một class, xem bản thân class này như là 1 mảng. Ví dụ, bạn tạo một ô liệt kê (listbox) mang tên lbStr, chứa một danh sách những chuỗi chữ được trữ trên một mảng một chiều. Thông thường, một listbox thường có một số phương thức và thuộc tính ngoài mảng chuỗi. Tuy nhiên, sẽ rất tiện lợi nếu ta có khả năng truy xuất listbox với một chỉ mục, coi listbox như là một mảng. Như thế chúng ta có thể viết ra những câu lệnh sau:

string strFirst = lbStr[0];
string strLast = lbStr[lbStr.Length - 1];

Bộ chỉ mục (indexer) là một cấu trúc mới của C#, cho phép truy xuất tới những danh sách nằm trong một lớp, sử dụng cú pháp [] thông dụng của mảng. Indexer được xem như là một thuộc tính (property) đặc biệt kèm theo những phương thức set() và get().
Khai báo indexer cho phép chúng ta tạo ra những class hoặc struct hoạt động tương tự mảng. Những đối tượng của lớp này có thể được truy cập sử dụng toán tử truy xuất mảng [].
Chúng ta có thể khai báo indexer trong một lớp sử dụng cú pháp như sau:

kiểu_dữ_liệu this[kiểu_dữ liệu chỉ_số]
{
get;
set;
}

Kiểu dữ liệu trả về được quyết định bởi kiểu của đối tượng được trả về bởi indexer.
Kiểu dữ liệu của chỉ số xác định kiểu của chỉ số dùng để duyệt qua danh sách. Thông thường kiểu của chỉ số là kiểu số nguyên, nhưng chúng ta cũng có thể sử dụng kiểu khác, ví dụ như string.
Từ khóa this dùng để tham chiếu đến đối tượng mà indexer xuất hiện.
Indexer có thể xem như một property bình thường, do đó, chúng ta có thể định nghĩa các phương thức set() và get() để xác định phần tử nào của mảng được yêu cầu truy cập hay thiết lập.

string[] listStr = new string[10];
string this[int idx]
{
get
{
return listStr[idx];
}
set
{
listStr[idx] = value;
}
}

Sau đây là ví dụ về indexer

using System;

namespace UseIndexer
{
public class ListBoxTest
{
// khởi tạo ListBox với một chuỗi
public ListBoxTest(params string[] initialStrings)
{
// cấp phát không gian cho chuỗi
strings = new String[256];
// copy chuỗi truyền từ tham số
foreach (string s in initialStrings)
{
strings[ctr++] = s;
}
}
// thêm một chuỗi
public void Add(string theString)
{
if (ctr >= strings.Length)
{
// xử lý khi chỉ mục sai
}
else
strings[ctr++] = theString;
}
// thực hiện bộ truy cập
public string this[int index]
{
get
{
if (index < 0 || index >= strings.Length)
{
// xử lý chỉmục sai
}
return strings[index];
}
set
{
if (index >= ctr)
{
// xử lý lỗi chỉ mục không tồn tại
}
else
strings[index] = value;
}
}
// lấy số lượng chuỗi được lưu giữ
public int GetNumEntries()
{
return ctr;
}
// các biến thành vịên lưu giữ mảng cho bộ chỉ mục
private string[] strings;
private int ctr = 0;
}
class Program
{
static void Main(string[] args)
{
// tạo một đối tượng ListBox mới và khởi tạo
ListBoxTest lbt = new ListBoxTest("Hello", "World");
// thêm một số chuỗi vào lbt
lbt.Add("I");
lbt.Add("am");
lbt.Add("learning");
lbt.Add("C#");

// dùng bộ chỉ mục
string strTest = "Universe";
lbt[1] = strTest;
// truy cập và xuất tất cả các chuỗi
for (int i = 0; i < lbt.GetNumEntries(); i++)
{
Console.WriteLine("lbt[{0}]:{1}", i, lbt[i]);
}
Console.ReadLine();
}
}
}

Trong chương trình trên, đối tượng ListBoxTest lưu giữ một mảng chuỗi strings, và một biến thành viên ctr dùng để đếm số chuỗi được chứa trong mảng strings.
Chúng ta khởi tạo mảng strings có tối đa 256 phần tử như sau:

strings = new String[256];

Phần còn lại của constructor là copy các chuỗi được truyền vào từ tham số vào strings.
Phần quan trọng ở đây là indexer

public string this[int index]
{
get
{
if (index < 0 || index >= strings.Length)
{
// xử lý chỉmục sai
}
return strings[index];
}
set
{
if (index >= ctr)
{
// xử lý lỗi chỉ mục không tồn tại
}
else
strings[index] = value;
}
}

Phương thức get() đầu tiên kiểm tra sự hợp lệ của giá trị biên của chỉ mục, nếu hợp lệ thì sẽ trả về giá trị được yêu cầu.
Đối với phương thức set() thì đầu tiên nó sẽ kiểm tra xem chỉ mục của đối tượng cần lấy có vượt quá số lượng của các đối tượng trong mảng hay không. Nếu giá trị chỉ mục hợp lệ tức là tồn tại một phần tử có chỉ mục tương đương, phương thức sẽ bắt đầu thiết lập lại giá trị của phần tử này. Từ khóa value được sử dụng để tham chiếu đến tham số đưa vào trong phép gán của thuộc tính.
Do đó, nếu chúng ta viết

lbt[10] = "Welcome to C#";

Trình biên dịch sẽ gọi phương thức set() của bộ chỉ mục trên đối tượng và truyền vào một chuỗi “Welcome to C#” tới tham số ngầm định tên là value của phương thức set().

Tags: c#codecodingtrainingtutorial
Previous Post

property trong C#

Next Post

delegate và event trong C#

qadmin

qadmin

Related Posts

Hướng dẫn sử dụng Layout trong Android và thiết kế giao diện hổ trợ nhiều loại màn hình

Tag Helpers trong ASP.NET Core MVC

13/12/2020
Hướng dẫn sử dụng Layout trong Android và thiết kế giao diện hổ trợ nhiều loại màn hình

Những tính năng mới trong C# 7

03/12/2020
Hướng dẫn sử dụng Layout trong Android và thiết kế giao diện hổ trợ nhiều loại màn hình

Những tính năng mới trong C# 6

03/12/2020
Hướng dẫn sử dụng Crystal Report với Visual Studio

Hướng dẫn sử dụng Crystal Report với Visual Studio

19/11/2020
7 thủ thuật Windows Group Policy trong Windows 10

7 thủ thuật Windows Group Policy trong Windows 10

15/12/2016
5 cách để học lập trình nhanh hơn

Ví dụ minh họa Client-Server trong C#

05/10/2013
Next Post
5 cách để học lập trình nhanh hơn

delegate và event trong C#

Trả lời Hủy

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

You might also like

Hướng dẫn thêm nút chia sẻ ZALO cho website

Hướng dẫn thêm nút chia sẻ ZALO cho website

08/07/2021
sublime-text-3

SublimeText: 10 plugin hổ trợ JavaScript

16/01/2021
Hướng dẫn sử dụng Layout trong Android và thiết kế giao diện hổ trợ nhiều loại màn hình

Tag Helpers trong ASP.NET Core MVC

13/12/2020
Hướng dẫn sử dụng Layout trong Android và thiết kế giao diện hổ trợ nhiều loại màn hình

Những tính năng mới trong C# 7

03/12/2020
Hướng dẫn sử dụng Layout trong Android và thiết kế giao diện hổ trợ nhiều loại màn hình

Những tính năng mới trong C# 6

03/12/2020
php-mysql

Sử dụng mệnh đề WHERE của câu lệnh SELECT trong PHP và MySQL

13/11/2020
Học Lập Trình

Code5s.com được xây dựng với mong muốn mang lại những bài học hữu ích, thiết thực, và chất lượng cho mọi người.

Chuyên mục

Công cụ Java & Java EE Lập trình Android Lập trình C# Lập trình PHP Thiết kế web Tin công nghệ Tips Tài liệu Wearable Web Services XML

Kết nối

  • Trang chủ
  • Tin công nghệ
  • Lập trình Android
  • Java & Java EE
  • Thiết kế web
  • Lập trình C#
  • Lập trình PHP

© 2020 Code5s.com

No Result
View All Result
  • Trang chủ
  • Tin công nghệ
  • Lập trình Android
  • Java & Java EE
  • Thiết kế web
  • Lập trình C#
  • Lập trình PHP

© 2020 Code5s.com

Welcome Back!

Login to your account below

Forgotten Password?

Create New Account!

Fill the forms bellow to register

All fields are required. Log In

Retrieve your password

Please enter your username or email address to reset your password.

Log In