“T” có nghĩa là gì trong C #?


79

Tôi có nền tảng VB và tôi đang chuyển đổi sang C # cho công việc mới của mình. Tôi cũng đang cố gắng cải thiện .NET nói chung. Tôi đã thấy từ khóa "T" được sử dụng rất nhiều trong các mẫu mà mọi người đăng. Chữ "T" trong C # có nghĩa là gì? Ví dụ:

public class SomeBase<T> where T : SomeBase<T>, new()

Làm gì T? Tại sao tôi muốn sử dụng nó?


1
T ~ >> type: bất kỳ loại nào bạn muốn
AminM

Câu trả lời:


50

Đó là một biểu tượng cho một tham số kiểu chung . Nó cũng có thể là một cái gì đó khác, ví dụ:

public class SomeBase<GenericThingy> where GenericThingy : SomeBase<GenericThingy>, new()

Only T là mặc định được Microsoft sử dụng và khuyến khích.


45

T không phải là một từ khóa per-se mà là một trình giữ chỗ cho một loại chung chung. Xem phần Giới thiệu về Generics của Microsoft

Cú pháp VB.Net tương đương sẽ là:

Public Class SomeBase(Of T As {Class, New}))

15

Một ví dụ điển hình về một tên khác được sử dụng thay vì T wouldlà các lớp bảng băm, ví dụ:

public class Dictionary<K,V> ...

Where Klà viết tắt của Key và Vgiá trị. Tôi nghĩ Tlà viết tắt của loại.

Bạn có thể đã thấy điều này xung quanh. Nếu bạn có thể tạo kết nối, nó sẽ khá hữu ích.


5

Đó sẽ là một "Chung". Như mọi người đã đề cập, có một lời giải thích của Microsoft về khái niệm này. Đối với lý do tại sao "T" - hãy xem câu hỏi này .

Tóm lại, nó cho phép bạn tạo một lớp / phương thức chuyên biệt cho một kiểu cụ thể. Một ví dụ cổ điển là System.Collections.Generic.List<T>lớp học. Nó giống như System.Collections.ArrayList, ngoại trừ nó cho phép bạn chỉ lưu trữ các loại vật phẩm T. Điều này cung cấp sự an toàn về loại - bạn không thể (vô tình hoặc cách khác) đặt các mục không đúng loại trong danh sách của mình. Không System.Collections.Genericgian tên chứa một số kiểu tập hợp khác nhau sử dụng điều này.

Về nơi bạn có thể sử dụng nó - đó là tùy thuộc vào bạn. Có rất nhiều trường hợp sử dụng xuất hiện theo thời gian. Phần lớn đó là một bộ sưu tập tự tạo (khi những bộ nội dung không đủ), nhưng nó thực sự có thể là bất cứ thứ gì.


3

Cách tốt nhất là bạn nên làm quen với "Generics", nhiều tài nguyên trên web, đây là một

T không phải là một từ khóa mà là một cái tên, có thể là bất cứ thứ gì thực sự theo như tôi biết, nhưng T là quy ước (khi chỉ cần một loại, của coruse)


2

Các Tlà tên cho tham số gõ vào một lớp học chung chung. Nó là viết tắt của "Type" nhưng bạn cũng có thể gọi nó là "Alice".

Bạn sử dụng generic để tăng khả năng tái sử dụng theo cách an toàn về loại mà không cần sao chép mã. Vì vậy, bạn không cần phải đến các lớp học viết cho ListOfIntegers, ListOfStrings, ListOfChars, ListOfPersonsvà vân vân nhưng thay vào đó có thể viết một lớp chung List<T>và sau đó đối tượng thuyết minh các loại List<Int32>, List<string>, List<char>List<Person>. Trình biên dịch thực hiện công việc cho bạn.


1

Nó có nghĩa là "bất kỳ lớp nào". Nó có thể là "B", "A", bất cứ điều gì. Tôi nghĩ T được sử dụng vì "Mẫu"


Type sẽ thích hợp hơn class trong bối cảnh này vì T có thể vừa là tham chiếu vừa là kiểu giá trị.
Brian Rasmussen

1
Tôi tin rằng thuật ngữ "Mẫu" bắt nguồn từ các mẫu C ++. Tham số viết hoa một chữ cái giống như macro C ++.
Michael Meadows

T chắc chắn được ưa chuộng đối với vai trò tương tự trong C ++ templates (nhưng có nó vẫn là viết tắt của "Loại" - nó lấy nơi một loại, không phải là một Template)
James Curran
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.