2015-08-08 21 views
19

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?

Attached the snap of my sample program.

+4

_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. –

+7

'int' là một * bí danh * cho' System.Int32' (mà bạn sẽ không thể sử dụng) –

+1

@ 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; –

Trả lời

23

Đó 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-

+1

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

+1

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

+0

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

8

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.

+0

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

4

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

+0

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; –

+5

@RajeshPawde không có nó sẽ không. 'System.Int32' đủ điều kiện và không cần' using System; ' –

+0

Lỗi của tôi ở trên sẽ hoạt động. –

Các vấn đề liên quan