Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 31 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
31
Dung lượng
316,5 KB
Nội dung
A Brief Introduction to C# David Buksbaum Agenda • Goals • Background Information • C# - Up and Running • Quick Comparison to Java • Networking Namespaces • References Goals • Provide enough information to allow you to follow the code samples • Highlight key differences with Java • Tell you where you can get the compilers • Tell you where to go for more details on C# • Tell you where to go for more detailed comparisons with Java • Not to debate which is better, more important, faster, slower, or looks better in emacs Quick Glossary • BCL – Base Class Library • CLR – Common Language Runtime • GUI – Graphic User Interface • MSIL – Microsoft Intermediate Language • MS – Microsoft • SCM – Service Control Manager • SOA – Service Oriented Architecture .NET • .NET is: • Microsoft’s Platform for Windows Development • CLR – the Virtual Machine that runs MSIL aka MS Byte Code • BCL aka .NET Framework • A set of compilers that can generate MSIL C#, Visual Basic, C++, Java (the MS flavor) • There are 50+ languages that generate MSIL • http://www.dotnetpowered.com/languages.aspx • Most interoperate with each other C# • Language Created by Anders Hejlsberg (father of Delphi) • The Derivation History can be viewed here: http://www.levenez.com/lang/history.html • Principle Influencing Languages: • C++ • Delphi • Java • Designed to be an optimal Windows development language C# - Up and Running • A Simple C# Application • Application Types • Compiler & Run Time A Sample C# Application Application Types • Console Application • Has standard streams (out, in, err) • GUI can be added manually • Windows Application • GUI based • No standard streams (out, in, err) • Main thread is shared by the GUI message pump & your code • Service • No standard streams (out, in, err) • Main thread is commandeered by the SCM • No GUI Compiler Options from MS • SDK contains the command line compiler (C:\WINDOWS\Microsoft.NET\Framework\ {version}\csc.exe) • {version} looks like v2.0.50727 • Express Edition – Free IDE to work with Visual C# • Reduced runctionality version of Visual Studio • Visual Studio – The full development system • Optimizations, Data Access, Multi-Language, etc • $$$ [...]... a VM hosted logical process • Communications between App Domains requires marshalling (IPC) • Assemblies • Similar to Java JAR files • Physically they are EXE and/or DLL files What’s not Relevant, but Useful • Attributes • Meta tags that provide run time information for a type, NOT the instance • Example: [Serializable] public class foo { int x; }; • [Serializable] is converted into the class SerializableAttribute... override int Add(int x, int y); • Methods not marked virtual are equivalent to Java final methods • Methods can be marked with new to break the virtual chain What’s not Relevant, but Useful • Interop • Access to native code through attributes • [DllImport(“user32.dll”)] static int GetSystemMetrics(int); • The DllImport attribute informs the compiler and runtime that the tagged method is inside a native DLL... into the class SerializableAttribute • Attributes can be retrieved at run time • Many framework sub-systems use attributes • Serialization, XML, Interop, Conditional, Obsolete, etc… What’s not Relevant, but Useful • Polymorphism • Methods default to being non-virtual • To be virtual it must be defined as virtual • eg: public virtual int Add(int x, int y); • To override a virtual method, you use the... http://msdn1.microsoft.com/en-us/default.aspx • http://gotdotnet.com/ • http://www.c-sharpcorner.com/ • http://msdn.microsoft.com/community/codezone/ • http://en.wikipedia.org/wiki/C_Sharp_programming_langua ge • Online Tutorials • http://www .csharp- station.com/Tutorial.aspx • http://www.c-sharpcorner.com/Tutorials.asp Books • • Programming C#, Fourth Edition by Jesse Liberty (http://search.barnesandnoble.com/booksearch/ isbnInquiry.asp?z=y&isbn=0596006993&itm=2)... newtypename = namespace.type; • Directory structure != namespace hierarchy (as in C++) What’s Different & Relevant – cont • Properties • get, set and get/set • public string MyProperty { get { return(_text); } set { _text = value; } } • Delegates • Type safe function pointers • To create • public delegate bool CompareHandler(object left, object right); • To use • CompareHandler ch = new CompareHandler(myMethod);... DLL • Options such as the actual name in the DLL, marshalling strategies, calling convention, and more can be set using the attribute What’s not Relevant, but Useful • NET 2.0 – out now • • • • • Generics Partial Types Anonymous Methods Nullable Types Net 3.0 • Its all about data • Tuples & Query constructs public void Linq1() { int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 }; var lowNums = from n... functionality for high level distributed programming (similar to RMI) • System.Web • Provides high level access to HTTP Future of NET Networking • Windows Communications Foundation • • • • Formally code named Indigo Designed to make SOA an integral part of Windows Tight coupling with NET designs For more information • http://msdn.microsoft.com/windowsvista/default.aspx? pull=/library/en-us/dnlong/html/wcfarch.asp... Linux, Mac OS X, Solaris, Unix • Sponsored by Novell • Food for thought: Suse + KDE + Mono = ??? • Sharp Develop • Open source IDE that uses NET SDK or Mono • Written in C# Quick Comparison to Java • What’s the same • • • • • • • Syntactically Similar Garbage Collected VM Environment Immutable Strings Exceptions (try / catch / finally) Object as root Single Inheritance model Multi-Interface model What’s... ushort, uint, ulong • Careful: byte in java is sbyte in C# • Class objects to wrap primitives • Int32 x = new Int32(4); • int x = Int32.Parse(“4”); What’s Different & Relevant – cont • Structures • Stack based elements, not heap based • Value type • struct packet { int code; string data; }; • Boxing / Unboxing • • • • • Conversion between value type and reference type packet p = new packet(); object o =... & Relevant • Keywords • • • • base vs super lock vs synchronized : vs extends & implements is vs instanceof • Exceptions • No throws keyword • See http://msdn.microsoft.com/chats/transcripts/vstudio/vstudio_ 032103.aspx What’s Different & Relevant – cont • Namespaces • namespace vs package • using vs import • No wildcard using • using namespace; // brings it all in – non-recursive • Type Aliasing • . A Brief Introduction to C# David Buksbaum Agenda • Goals • Background Information • C# - Up and Running • Quick Comparison to Java • Networking Namespaces • References Goals • Provide. language C# - Up and Running • A Simple C# Application • Application Types • Compiler & Run Time A Sample C# Application Application Types • Console Application • Has standard streams (out,. err) • GUI can be added manually • Windows Application • GUI based • No standard streams (out, in, err) • Main thread is shared by the GUI message pump & your code • Service • No standard streams