Tôi đọc rằng tất cả các tài nguyên gốc đều nằm trong không gian tên System
. Nếu tôi nhận xét ra using System
, tôi hy vọng sẽ có một lỗi xây dựng trong chương trình của tôi. Tuy nhiên, nó đang chạy thành công. Tại sao điều này?Tại sao các kiểu dữ liệu nguyên thủy hoạt động mà không bao gồm không gian tên Hệ thống?
Trả lời
Đó là vì int
là một bí danh cho System.Int32
, và kể từ khi "Int32" đã được bắt đầu bằng không gian tên của nó (ví dụ. "Đủ điều kiện"), cú pháp là hợp pháp mà không cần phải chỉ định using System;
tại đầu mã của bạn.
Đoạn MSDN dưới đây mô tả này concept-
Hầu hết C# ứng dụng bắt đầu với một phần của việc sử dụng chỉ thị. Phần này liệt kê các không gian tên mà ứng dụng sẽ sử dụng thường xuyên và lưu lập trình viên chỉ định một tên đủ điều kiện mỗi lần sử dụng một phương pháp. Đối với dụ, bằng cách bao gồm các dòng:
using System;
Khi bắt đầu một chương trình, các lập trình viên có thể sử dụng mã:
Console.WriteLine("Hello, World!");
Thay vì:
System.Console.WriteLine("Hello, World!");
System.Int32
(aka "int") sẽ là sau này. Dưới đây là một ví dụ về điều này trong mã -
//using System;
namespace Ns
{
public class Program
{
static void Main(string[] args)
{
System.Int32 i = 2; //OK, since we explicitly specify the System namespace
int j = 2; //alias for System.Int32, so this is OK too
Int32 k = 2; //Error, because we commented out "using System"
}
}
}
Kể từ dòng 11 là không đủ điều kiện/aliasing một loại đầy đủ, using System;
sẽ cần phải được chú thích cho các lỗi ra đi.
bổ sung references-
Built-In Types Table (C# Reference) (Danh sách tất cả được xây dựng trong các loại, và các khoản tương đương .NET framework của họ)
Hoặc gamma của màn hình của tôi bị loại hoặc tầm nhìn của bạn là của một con ong;) (bảng màu) – MickyD
Có .. Tôi thường mã trên nền đen. Chỉ cần chuyển sang màu trắng, điều này sẽ tốt hơn một chút. – iliketocode
Hehe tốt hơn. Tôi sử dụng lược đồ đen tối, nó chỉ là _dark blue_ làm những thứ điên rồ cho đôi mắt của tôi;) – MickyD
Như đã được đề cập trước đây int
là bí danh của loại System.Int32
. Bí danh của các loại nguyên thủy được hiểu rõ ràng là bằng ngôn ngữ C#. Dưới đây là danh sách:
object: System.Object
string: System.String
bool: System.Boolean
byte: System.Byte
sbyte: System.SByte
short: System.Int16
ushort: System.UInt16
int: System.Int32
uint: System.UInt32
long: System.Int64
ulong: System.UInt64
float: System.Single
double: System.Double
decimal: System.Decimal
char: System.Char
Vì vậy, đối với những bí danh, còn được gọi là loại đơn giản, bạn không cần phải xác định bất kỳ không gian tên.
Nói cách khác, "ma thuật biên dịch". ++ nhất về câu trả lời chủ đề này Q. – RubberDuck
Khi bạn sử dụng int, về cơ bản bạn đang đặt trong System.Int32.Vì đây là loại tên đầy đủ, bạn không thực sự cần using System;
chương trình của bạn sẽ làm việc nếu bạn đã làm
System.Int32 num = 0;
ngay cả khi không using
Không điều này sẽ làm tăng lỗi biên dịch nếu chúng ta không sử dụng Hệ thống; –
@RajeshPawde không có nó sẽ không. 'System.Int32' đủ điều kiện và không cần' using System; ' –
Lỗi của tôi ở trên sẽ hoạt động. –
- 1. Loại hoặc tên không gian tên 'Dữ liệu' không tồn tại trong không gian tên 'Hệ thống'
- 2. Null cho các kiểu dữ liệu nguyên thủy
- 3. Tại sao bao gồm ('php: // input') không hoạt động?
- 4. Tại sao không có loại nguyên thủy cho Chuỗi?
- 5. Không gian tên vô danh bao gồm tất cả các không gian tên?
- 6. Tại sao Java Generics không hỗ trợ các kiểu nguyên thủy?
- 7. Tại sao Kotlin không cho phép sử dụng lateinit với các kiểu nguyên thủy?
- 8. Tại sao rand() biên dịch mà không bao gồm cstdlib hoặc sử dụng không gian tên std?
- 9. Hệ thống Android có bao gồm JVM không?
- 10. Không gian tên PHP và Bao gồm() với các lớp
- 11. Có thể sử dụng LINQ và lambdas mà không bao gồm không gian tên System.Linq không?
- 12. Các kiểu cấu trúc và nguyên thủy
- 13. Linux - Tại sao cuộc gọi hệ thống tùy chỉnh hoạt động không đúng với số âm?
- 14. Tại sao bạn phải bao gồm tệp PHP, khi sử dụng không gian tên?
- 15. Sự khác biệt trong cách sử dụng kiểu dữ liệu nguyên thủy và bao bọc và nhu cầu của kiểu dữ liệu bao bọc là gì?
- 16. Rust có tự động tham chiếu kiểu nguyên thủy không?
- 17. 'Hệ thống': không gian tên có tên này không tồn tại
- 18. Java: Sao chép mảng của kiểu không nguyên thủy
- 19. Loại hoặc namespace tên 'Windows' không tồn tại trong không gian tên 'hệ thống'
- 20. Tại sao Magento 1.4 bao gồm tệp javascript theo đường dẫn hệ thống tệp?
- 21. Tại sao không thể sử dụng các kiểu nguyên thủy với các kiểu trả về đa hình?
- 22. Java mảng nguyên thủy List.contains không hoạt động đúng
- 23. Sử dụng đổi tên dplyr() bao gồm các tên biến không có trong tập dữ liệu
- 24. Tại sao không phải là BigInteger nguyên thủy
- 25. Modulo (%) hoạt động với kiểu dữ liệu thập phân nhưng không hoạt động với float hoặc thực. TẠI SAO?
- 26. Tại sao phải có các biến cục bộ, bao gồm các biến nguyên thủy, luôn được khởi tạo trong Java?
- 27. Tên kiểu hoặc không gian tên UpdatePanel không tồn tại trong không gian tên System.Web.UI
- 28. Các kiểu hệ thống kiểu Haskell
- 29. Android: Không thể gọi toString() trên kiểu nguyên thủy int
- 30. tại sao tôi có thể thiết lập các kiểu dữ liệu để null trong hoạt động ternary
_Even_ nếu bạn xóa tất cả các không gian tên, nó sẽ công việc :) Chỉ cần một gợi ý, nếu bạn nói 'Int32' thay vì' int', nó sẽ không hoạt động. –
'int' là một * bí danh * cho' System.Int32' (mà bạn sẽ không thể sử dụng) –
@ AlexK.I có thể sử dụng int mặc dù tôi nhận xét bằng cách sử dụng Hệ thống; –