Thu tàng
0Hữu dụng +1
0
C# ngữ ngôn trung định nghĩa nhất cá phạm vi
using thịC#Ngữ ngôn trung định nghĩa nhất cá phạm vi, tương tại thử phạm vi chi ngoại thích phóng nhất cá hoặc đa cá đối tượng.
Ngoại văn danh
using
Chủ yếu dụng đồ
Tác vi ngữ cú đẳng
Hàm nghĩa
Thích phóng nhất cá hoặc đa cá đối tượng

Giản giới

Bá báo
Biên tập
Định nghĩa nhất cá phạm vi, tương tại thử phạm vi chi ngoại thích phóng nhất cá hoặc đa cá đối tượng.

Ngữ pháp

Bá báo
Biên tập
using (Font font1 = new Font( "Arial", 10.0f)) { }

C# ngữ ngôn tham khảo

Bá báo
Biên tập

Chủ yếu dụng đồ

Phóng nghênh usingQuan kiện tựHữu lưỡng cá chủ yếu dụng đồ:

Tác vi ngữ cú

Dụng vu định nghĩa nhất cá phạm vi, tại thử phạm vi đích mạt vĩ tương thích phóng đối tượng
C#
C# thông quá.NETFrameworkCông cộng ngữ ngôn vận hành khố(CLR) tự động thích phóng dụng vu tồn trữ bất tái nhu yếu đích đối tượng đích nội tồn. Nội tồn đích thích phóng cụ hữu bất xác định tính; nhất đán CLR quyết định chấp hành lạp ngập hồi thu, tựu hộiThích phóng nội tồn.Đãn thị, thông thường tối hảo tẫn khoái thích phóng chư nhưVăn kiện cú bínhHòa võng lạc liên tiếp giá dạng đích hữu hạn tư nguyên.
using ngữ cú duẫn hứa trình tự viên chỉ định sử dụng tư nguyên đích đối tượng ứng đương hà thời thích phóng tư nguyên. Vi using ngữ cú đề cung đích đối tượng tất tu thật hiện IDisposable tiếp khẩu. Thử tiếp khẩu đề cung liễu Dispose phương pháp, cai phương pháp tương thích phóng thử đối tượng đích tư nguyên.
Khả dĩ tại đáo đạt using ngữ cú đích mạt vĩ thời, hoặc giả tại cai ngữ cú kết thúc chi tiền dẫn phát liễu dị thường tịnh thả khống chế quyền ly khai ngữ cú khối thời, thối xuất using ngữ cú.
1.Khả dĩ tại using ngữ cú trung thanh minh đối tượng ( như thượng sở kỳ ), hoặc giả tại using ngữ cú chi tiền thanh minh đối tượng, như hạ sở kỳ:
Fontfont2 = new Font( "Arial", 10.0f); using(font2) { //use font2 } //2. Khả dĩ hữu đa cá đối tượng dữ using ngữ cú nhất khởi sử dụng, đãn thị tất tu tại using ngữ cú nội bộ thanh minh giá ta đối tượng, như hạ sở kỳ: using(Fontfont3 = new Font( "Arial", 10.0f),font4 = new Font( "Arial", 10.0f)) { //Use font3 and font4. }

Kỳ lệ 1

Hạ diện đích kỳ lệ hiển kỳ dụng hộ định nghĩa loại khả dĩ như hà thật hiện tha tự kỷ đích Dispos tưởng nha e hành vi. Chú ý loại hình tất tu tòng IDisposable kế thừa.
using System; class C: IDisposable { public void UseLimitedResource() { Console.WriteLine( "Usinglimitedresource..." ); } void IDisposable.Dispose() { Console.WriteLine( "Disposinglimitedresource." ); } } class Program { static void Main() { using(C c = new C()) { c.UseLimitedResource(); } Console.WriteLine( "Nowoutsideusingstatement." ); Console.ReadLine(); } }

Tác vi chỉ lệnh

Dụng vu viMệnh danh không gianSang kiến biệt phán phiến danh hoặc đạo nhập kỳ tha mệnh danh không gian trung định nghĩa đích loại hình
①. Mạt thiết lạt duẫn hứa tại mệnh danh không gian trung sử dụng loại hình, giá dạng, nâm tựu bất tất tại cai mệnh danh không gian trung hạn định mỗ cá loại hình đích sử dụng:
using System.Text;
②. Vi mệnh danh không gian hoặc loại toản tham trọng chương hình sang kiến biệt danh.
using Project = PC.MyCompany.Project;
using chỉ lệnh đích phạm vi hạn chế vi bao hàm giảng kiện khang tha đích văn kiện.
Sang kiến using biệt danh, dĩ tiện canh dịch vu tươngTiêu thức phùHạn định đáo mệnh danh không gian hoặc loại hình.
Sang kiếnusingChỉ lệnh, dĩ tiện tại mệnh danh không gian trung sử dụng loại hình nhi bất phóng khuyến định tất chỉ địnhMệnh danh không gian.usingChỉ lệnh bất vi nâm đề cung đốiKhảm sáoTại chỉ định mệnh danh không gian trung đích nhậm hà mệnh danh không gian đích phóng vấn.
Mệnh danh không gian phân vi lưỡng loại: Dụng hộ định nghĩa đích mệnh danh không gian hòaHệ thống định nghĩaĐích mệnh danh không gian. Dụng hộ định nghĩa đích mệnh danh không gian thị tại đại mã trung định nghĩa đích mệnh danh không gian. Nhược yếu tra khán hệ vĩnh hưởng muội thống định nghĩa đích mệnh danh không gian đích liệt biểu

Kỳ lệ 2

1.Hạ diện đích kỳ lệ hiển kỳ liễu như hà viMệnh danh không gianĐịnh nghĩa hòa sử dụngusingBiệt danh:
namespace PC { //Define an alias for the nested namespace. using Project = PC.MyCompany.Project; classA { void M() { //Use the alias Project.MyClassmc=newProject.MyClass(); } } namespace MyCompany { namespace Project { public class MyClass{} } } } 2. Hạ diện đích kỳ lệ hiển kỳ liễu như hà vi loại định nghĩa using chỉ lệnh hòa using biệt danh: //cs_using_directive2.cs //Using directive. using System; //Using alias for a class. using AliasToMyClass = NameSpace1.MyClass; namespace NameSpace1 { public class MyClass { public override string ToString() { return "You are in NameSpace1.MyClass"; } } } namespace NameSpace2 { class MyClass { } } namespace NameSpace3 { //Using directive: using NameSpace1; //Using directive: using NameSpace2; class MainClass { static void Main() { AliasToMyClass someva r= new AliasToMyClass(); Console.WriteLine(somevar); } } }
Thâu xuất: You are in NameSpace1.MyClass
=========================================================================================

Thâm nhập thảo luận

Bá báo
Biên tập

Dẫn ngôn

Tại.NET đại gia đình trung, hữu bất thiếu đíchQuan kiện tựThừa đam liễu đa chủng giác sắc, lệ như new quan kiện tự tựu thân kiêm sổ chức, trừ liễu năng cú sang kiến đối tượng, tại kế thừa thể hệ trung ẩn tàngCơ loạiThành viên, hoàn tạiPhiếm hìnhThanh minh trung ước thúc khả năng dụng tác loại hình tham sổ đích tham sổ, tại tường tế thảo luận using đích đa trọng thân phân đích cơ sở thượng lai liễu giải.NET tạiNgữ ngôn cơ chếThượng đích giản tiện dữ thâm thúy.
Na ma, using đích đa trọng thân phân đô thể hiện tại na ta phương diện ni, ngã môn tiên nhất đổ vi khoái ba:
· sang kiến biệt danh
· cường chế tư nguyên thanh lý
Hạ diện, bổn văn tương tòng giá kỉ cá giác độ lai xiển thuật using đích đa thải ứng dụng.

Dẫn nhập mệnh danh không gian

using tác vi dẫn nhậpMệnh danh không gianChỉ lệnh đích dụng pháp quy tắc vi:
using Namespace;
Tại.NET trình tự trung, tối thường kiến đích đại mã mạc quá vu tạiTrình tự văn kiệnĐích khai đầu dẫn nhập System mệnh danh không gian, kỳ nguyên nhân tại vu System mệnh danh không gian trung phong trang liễu ngận đa tối cơ bổn tối thường dụng đích thao tác, hạ diện đích đại mã đối ngã môn lai thuyết tối vi thục tất bất quá:
using System;
Giá dạng, ngã môn tại trình tự trung tựu khả dĩ trực tiếp sử dụng mệnh danh không gian trung đích loại hình, nhi bất tất chỉ định tường tế đích loại hình danh xưng. using chỉ lệnh khả dĩ phóng vấnKhảm sáoMệnh danh không gian.
Quan vu: Mệnh danh không gian
Mệnh danh không gian thị.NET trình tự tại la tập thượng đích tổ chức kết cấu, nhi tịnh phi thật tế đíchVật lý kết cấu,Thị nhất chủng tị miễn loại danh trùng đột đích phương pháp, dụng vu tương bất đồng đích sổ cư loại hình tổ hợp hoa phân đích phương thức. Lệ như, tại.NET trung ngận đa đích cơ bổn loại hình đô vị vu SystemMệnh danh không gian,Sổ cư thao tác loại hình vị vu System.Data mệnh danh không gian,

Ngộ khu

· using loại tự vuJava ngữ ngônĐíchimportChỉ lệnh, đô thị dẫn nhậpMệnh danh không gian(JavaTrung xưng tác bao ) giá chủngLa tập kết cấu;Nhi bất đồng vu C ngữ ngôn trung đích #include chỉ lệnh, dụng vu dẫn nhập thật tế đích loại khố,
· using dẫn nhập mệnh danh không gian, tịnh bất đẳng vuBiên dịch khíBiên dịch thời gia tái cai mệnh danh không gian sở tại đíchTrình tự tập,Trình tự tập đích gia tái quyết định vu trình tự trung đối cai trình tự tập thị phủ tồn tại điều dụng thao tác, như quả đại mã trung bất tồn tại nhậm hà điều dụng thao tác tắc biên dịch khí tương bất hội gia tái using dẫn nhập mệnh danh không gian sở tại trình tự tập. Nhân thử, tại nguyên văn kiện khai đầu, dẫn nhập đa cá mệnh danh không gian, tịnh phi gia tái đa cá trình tự tập, bất hội tạo thành “Quá độ dẫn dụng” đích tệ đoan. using vi mệnh danh không gian sang kiến biệt danh đích dụng pháp quy tắc vi:
using alias = namespace | type;
Kỳ trungnamespaceBiểu kỳ sang kiếnMệnh danh không gianĐích biệt danh; nhi type biểu kỳ sang kiến loại hình biệt danh. Lệ như, tại.NET Office ứng dụng trung, thường thường hội dẫn nhập Microsoft.Office.Interop.Word.dllTrình tự tập,Tại dẫn nhập mệnh danh không gian thời vi liễu tị miễn phồn tỏa đích loại hình thâu nhập, ngã môn thông thường vi kỳ sang kiến biệt danh như hạ:
using MSWord = Microsoft.Office.Interop.Word;
Giá dạng, tựu khả dĩ tại trình tự trung dĩ MSWord lai đại thế Microsoft.Office.Interop.Word tiền chuế, như quả yếu sang kiếnApplication đối tượng,Tắc khả dĩ thị giá dạng,
private static MSWord.Application ooo = new MSWord.Application();
Đồng dạng, dã khả dĩ sang kiến loại hình đích biệt danh, dụng pháp vi:
using
Nhi sang kiến biệt danh đích lánh nhất cá trọng yếu đích nguyên nhân tại vu đồng nhất cs văn kiện trung dẫn nhập đích bất đồngMệnh danh không gianTrung bao quát liễu tương đồng danh xưng đích loại hình, vi liễu tị miễn xuất hiện danh xưng trùng đột khả dĩ thông quá thiết định biệt danh lai giải quyết, lệ như:
namespace Boyspace { public class Player { public static void Play() { System.Console.WriteLine( "Boys play football." ); } } } namespace Girlspace { public class Player { public static void Play() { System.Console.WriteLine( "Girls play violin." ); } } }
Dĩ using sang kiến biệt danh, hữu hiệu đích giải quyết liễu giá chủng khả năng đích mệnh danh trùng đột, tẫn quản ngã môn khả dĩ thông quá loại hình toàn danh xưng lai gia dĩ khu phân, đãn thị giá hiển nhiên bất thị tối giai đích giải quyết phương án, using sử đắc giá nhất vấn đề nghênh nhận nhi giải, bất phí ti hào công phu, đồng thời tại biên mã quy phạm thượng khán lai dã canh gia đích phù hợp biên mã yếu cầu.

Cường chế tư nguyên thanh lý

4.1 do lai
Yếu lý giải thanh sở sử dụng using ngữ cú cường chế thanh lý tư nguyên, tựu thủ tiên tòng liễu giải Dispose mô thức thuyết khởi, nhi yếu liễu giải Dispose mô thức, tắc ứng thủ tiên liễu giải.NET đích lạp ngập hồi thu cơ chế. Giá ta hiển nhiên bất thị bổn văn sở năng hoàn thành đích hoành luận, ngã môn chỉ nhu yếu thủ tiên minh xác đích thị.NET đề cung liễu Dispose mô thức lai thật hiện hiển thức thích phóng hòa quan bế đối tượng đích năng lực.
Dispose mô thức
Dispose mô thức thị.NET đề cung đích nhất chủng hiển thức thanh lý đối tượng tư nguyên đích ước định phương thức, dụng vu tại.NET trung thích phóng đối tượng phong trang đíchPhi thác quản tư nguyên.Nhân vi phi thác quản tư nguyên bất thụ GC khống chế, đối tượng tất tu điều dụng tự kỷ đích Dispose() phương pháp lai thích phóng, giá tựu thị sở vị đích Dispose mô thức. Tòng khái niệm giác độ lai khán, Dispose mô thức tựu thị nhất chủng cường chế tư nguyên thanh lý sở yếu tuân thủ đích ước định; tòng thật hiện giác độ lai khán, Dispose mô thức tựu thị nhượng yếu nhất cá loại hình thật hiệnIDisposableTiếp khẩu, tòng nhi sử đắc cai loại hình đề cung nhất cá công hữu đích Dispose phương pháp.
Bổn văn bất tái thảo luận như hà nhượng nhất cá loại hình thật hiện Dispose mô thức lai đề cung hiển kỳ thanh lýPhi thác quản tư nguyênĐích phương thức, nhi tương chú ý tập trung tại như hà dĩ using ngữ cú lai giản tiện đích ứng dụng giá chủng thật hiện liễu Dispose mô thức đích loại hình đích tư nguyên thanh lý phương thức. Ngã môn tạiNội tồn quản lýDữ lạp ngập hồi thu chương tiết tương hữu tường tế đích thảo luận.
using ngữ cú đề cung liễu cường chế thanh lý đối tượng tư nguyên đích tiện tiệp thao tác phương thức, duẫn hứa chỉ định hà thời thích phóng đối tượng đích tư nguyên, kỳ điển hình ứng dụng vi:
using (Font f = new Font( "Verdana", 12, FontStyle.Regular)) { // chấp hành văn bổn hội chế thao tác Graphics g = e.Graphics; Rectangle rect = new Rectangle(10, 10, 200, 200); g.DrawString( "Try finally dispose font.", f, Brushes.Black, rect); }// vận hành kết thúc, thích phóng f đối tượng tư nguyên
Tại thượng thuật điển hình ứng dụng trung, using ngữ cú tại kết thúc thời hội tự động điều dụng dục bị thanh trừ đối tượng đích Dispose() phương pháp. Nhân thử, caiFontĐối tượng tất tu thật hiện IDispose tiếp khẩu, tài năng sử dụng using ngữ cú cường chế đối tượng thanh lý tư nguyên. Ngã môn tra khán kỳ loại hình định nghĩa khả tri:
public sealed class Font: MarshalByRefObject, ICloneable, ISerializable, IDisposable
Font loại hình đích xác thật hiện liễu IDisposeable tiếp khẩu, dã tựu cụ hữu liễu hiển kỳ hồi thu tư nguyên đích năng lực. Nhiên nhi, ngã môn tịnh vị tòng thượng thuật đại mã trung, khán xuất nhậm hà sử dụng Dispose phương pháp đích chu ti mã tích, giá chính thức using ngữ cú đái lai đích giản tiện chi xử, kỳ thật chất cứu cánh chẩm dạng ni?
4.2 thật chất
Yếu tưởng liễu giải using ngữ cú đích chấp hành bổn chất, liễu giảiBiên dịch khíTại bối hậu tố liễu na ta thủ cước, tựu tất tu hồi quy đáo IL đại mã trung lai yết mật tài hành:
.method public hidebysig static void Main() cil managed
{
.entrypoint
// đại mã đại tiểu 40 (0x28)
.maxstack 4
.locals init ([0] class [System.Drawing]System.Drawing.Font f,
[1] bool CS$4$0000)
IL_0000: nop
IL_0001: ldstr "Verdana"
IL_0006: ldc.r4 12.
IL_000b: ldc.i4.0
IL_000c: newobj instance void [System.Drawing]System.Drawing.Font::.ctor(string,float32,
valuetype [System.Drawing]System.Drawing.FontStyle)
IL_0011: stloc.0
.try
{
…… Bộ phân tỉnh lược……
} // end.try
finally
{
…… Bộ phân tỉnh lược……
IL_001f: callvirt instance void [mscorlib]System.IDisposable::Dispose()
IL_0024: nop
IL_0025: endfinally
} // end handler
IL_0026: nop
IL_0027: ret
} // end of method UsingDispose::Main
Hiển nhiên,Biên dịch khíTại tự động tương using sinh thành vi try-finally ngữ cú, tịnh tại finally khối trung điều dụng đối tượng đích Dispose phương pháp, lai thanh lý tư nguyên.
Tại.NET quy phạm trung, vi nhuyễn kiến nghị khai phóng nhân viên tại điều dụng nhất cá loại hình đích Dispose() hoặc giả Close() phương pháp thời, tương kỳ phóng tạiDị thường xử lýĐích finally khối trung. Căn cư thượng diện đích phân tích ngã môn khả tri, using ngữ cú chính thị ẩn thức đích điều dụng liễu loại hình đích Dispose phương pháp, nhân thử dĩ hạ đích đại mã hòa thượng diện đích kỳ lệ thị hoàn toàn đẳng hiệu đích:
Graphics g = new Graphics(); Rectangle rect = new Rectangle(10, 10, 200, 200); g.DrawString( "Try finally dispose font.", f2, Brushes.Black, rect); } finally { if (f2!= null) ((IDisposable)f2).Dispose(); }
4.3 quy tắc
· using chỉ năng dụng vu thật hiện liễu IDisposable tiếp khẩu đích loại hình, cấm chỉ vi bất chi trì IDisposable tiếp khẩu đích loại hình sử dụng using ngữ cú, phủ tắc hội xuất hiện biên dịch thời thác ngộ;
· using ngữ cú thích dụng vu thanh lý đan cáPhi thác quản tư nguyênĐích tình huống, nhi đa cáPhi thác quảnĐối tượng đích thanh lý tối hảo dĩ try-finnaly lai thật hiện, nhân vi khảm sáo đích using ngữ cú khả năng tồn tại ẩn tàng đích Bug. Nội tằng using khối dẫn phát dị thường thời, tương bất năng thích phóng ngoại tằng using khối đích đối tượng tư nguyên.
· using ngữ cú chi trì sơ thủy hóa đa cá biến lượng, đãn tiền đề thị giá ta biến lượng đích loại hình tất tu tương đồng, lệ như:
using(Pen p1 = new Pen(Brushes.Black), p2 = new Pen(Brushes.Blue))
{
//
}
Phủ tắc, biên dịch tương bất khả thông quá. Bất quá, hoàn thị hữu biến thông đích bạn pháp lai giải quyết giá nhất vấn đề, nguyên nhân tựu thị ứng dụng using ngữ cú đích loại hình tất nhiên thật hiện liễuIDisposableTiếp khẩu, na ma tựu khả dĩ dĩ hạ diện đích phương thức lai hoàn thành sơ thủy hóa thao tác,
using (IDisposable font = new Font( "Verdana", 12, FontStyle.Regular), pen = new Pen(Brushes.Black))
{
float size = (font as Font).Size;
Brush brush = (pen as Pen).Brush;
}
Lánh nhất chủng bạn pháp tựu thị dĩ sử dụng try-finally lai hoàn thành, bất quản sơ thủy hóa đíchĐối tượng loại hìnhThị phủ nhất trí.
· Dispose phương pháp dụng vu thanh lý đối tượng phong trang đíchPhi thác quản tư nguyên,Nhi bất thị thích phóng đối tượng đích nội tồn, đối tượng đích nội tồn y nhiên do lạp ngập hồi thu khí khống chế.
· trình tự tại đạt đáo using ngữ cú mạt vĩ thời thối xuất using khối, nhi như quả đáo đạt ngữ cú mạt vĩ chi tiền dẫn nhập dị thường tắc hữu khả năng đề tiền thối xuất.
· using trung sơ thủy hóa đích đối tượng, khả dĩ tại using ngữ cú chi tiền thanh minh, lệ như:
Font f3 = new Font( "Verdana", 9, FontStyle.Regular);
using (f3)
{
// chấp hành văn bổn hội chế thao tác
}

Kết luận

Nhất cá giản đan đíchQuan kiện tự,Đa chủng bất đồng đích ứng dụng tràng hợp. Bổn văn tòng bỉ giác toàn diện đích giác độ, thuyên thích liễu using quan kiện tự tại.NET trung đích đa chủng dụng pháp, trị đắc chỉ xuất đích thị giá chủng dụng pháp tịnh phi thật hiện vu.NET đích sở hữu cao cấp ngữ ngôn, bổn văn đích tình huống chủ yếu cục hạn tại C# trung.