2009-03-23 3 views
17

tôi đang viết một số mã trong C#, và tôi thấy mình viết:Khối tuyên bố pháp lý dài nhất bạn có thể thực hiện chỉ với từ khóa C# là gì?

return new MyClass(... 

khi tôi nhận thấy rằng cả returnnew là cả từ khoá C#. Vì vậy, tôi tự hỏi chuỗi dài nhất của các từ khóa trong C# là gì. Tất cả tôi có thể nghĩ đến là:

internal static override void MyFunc(... 

đâu internal static override void là tất cả từ khoá. Bạn có thể nghĩ chuỗi từ khóa dài hơn không?

Lưu ý: Thực sự không có vấn đề gì. Tôi chỉ hy vọng có thể đổ thêm một số thú vị về đám cháy :-)

+1

Điều này không giống như "chống golf"? –

+1

ghi đè staatic? –

+0

hmm có, ghi đè tĩnh - thành thật mà nói, anh ấy không nói mã phải biên dịch ... ;-) – Razzie

Trả lời

43

Đối 6:

new protected internal unsafe virtual decimal Foo() {...} 

Chỉnh sửa cho 7:

new protected internal unsafe virtual extern decimal Foo(); 

Nếu chúng tôi cho phép dấu ngoặc và dấu ngoặc ôm ...

(chỉnh sửa "khóa", "đối tượng mới()", "như" và "chuỗi" đã được đóng góp bởi những người khác; xem ý kiến)

decimal Bar() { 
    lock (new object() as string) { 
     if (true) { 
      checked { 
       unsafe { 
        try { 
         do { 
          return default(decimal); 
          unchecked {break;} 
          continue; 
         } while (false); 
        } 
        catch { throw; } 
        finally { } 
       } 
      } 
     } 
    } 
} 
+0

Tuyệt vời! – scraimer

+0

nếu bạn đang đếm các ký tự: chuỗi ngoại lệ không an toàn bên trong được bảo vệ mới Foo(); – andleer

+0

số thập phân sẽ tốt hơn ;-p –

1
internal protected static volatile string foo = "bar"; 

Đó là 5.

-2

Tôi có thể ăn gian không?

internal protected static volatile StringBuilder @string = 
    new StringBuilder(int.Parse("12")); 

Sử dụng thực tế là tôi có thể sử dụng từ khóa hoặc cụm từ được đặt trước khác làm tên biến nếu tôi thêm nó bằng @ - đi kèm lúc 9 nếu bạn cho phép sao chép StringBuilder.

+5

StringBuilder không phải là một từ khóa, cũng không phải là Parse –

+0

Tôi chưa bao giờ biết về điều @! Nhưng tôi không nghĩ StringBuilder được tính là một từ khóa. Nó chỉ là một lớp, phải không? – scraimer

+0

Đủ công bằng. Ngoài ra tôi đã không được tính Parse, nhưng đã được đếm gấp đôi StringBuilder. –

32

Tôi đoán nó là vô hạn:

return null as string as string as string as string as string.... 
+0

Chúng tôi có một người chiến thắng! –

+2

Pah; Tôi muốn * khác nhau * điều khoản ... nhưng tôi không thể tranh luận sự thật của nó ... –

+0

Điều này có ảnh hưởng đến trình biên dịch không? –

2

Dưới đây là một trường hợp có thể được miễn là bạn muốn:

do do do do do do do do do do do do do do do // ... 
while(x) while(x) while(x) while(x) while(x) // ... 

Với từ khóa theo ngữ cảnh bạn cũng có thể

await await await await await await await // ... 
0

Một biến thể khác với định nghĩa phương thức (được tìm thấy bởi đồng nghiệp của tôi):

protected internal override sealed unsafe async void await() { ... } 

Làm cho 8 từ khóa liên tiếp. Sử dụng thực tế là await là một từ khóa theo ngữ cảnh, do đó, nó có thể được sử dụng lại cho tên phương thức.