C# 12 در یک Nutshell — مشخصات کتاب، فهرست مطالب و پیشگفتار
فروش یا انتشار این ترجمه منوط به داشتن مجوز لازم از صاحب حقوق اثر است.
O’REILLY®
C# 12 در یک Nutshell
مرجع قطعی
Joseph Albahari
تصویر روی جلد
O’REILLY®
C# 12 در یک Nutshell
وقتی دربارهٔ C# 12 یا .NET 8 پرسشی دارید، این راهنمای پرفروش پاسخهایی را که نیاز دارید در اختیار شما میگذارد. C# زبانی با انعطافپذیری و گسترهای غیرمعمول است و با رشد مداوم آن، همیشه چیزهای بسیار بیشتری برای آموختن وجود دارد. در سنت راهنماهای Nutshell انتشارات O’Reilly، این ویرایش کاملاً بهروزشده بهسادگی بهترین مرجع تکجلدیِ زبان C# است که امروز در دسترس است.
این کتاب برای برنامهنویسان متوسط و پیشرفته نوشته شده و توضیحات آن مستقیم سر اصل مطلب میروند؛ C#، CLR و کتابخانههای اصلی .NET را بدون مقدمههای طولانی یا نمونههای متورم، عمیق پوشش میدهد.
- از syntax و variableها تا موضوعات پیشرفتهای مانند pointerها، closureها و patternها، در C# بهروز شوید.
- با سه فصل اختصاصیافته به LINQ، عمیقاً وارد LINQ شوید.
- concurrency و asynchrony، threading پیشرفته و برنامهنویسی parallel را بررسی کنید.
- با قابلیتهای .NET شامل regular expressionها، networking، assemblyها، spanها، cryptography و
reflection.emit کار کنید.
Joe Albahari، سازندهٔ LINQPad، نویسندهٔ C# 10 in a Nutshell و C# 12 Pocket Reference است.
«C# 12 in a Nutshell یکی از معدود کتابهایی است که برای مراجعهٔ سریع روی میز کارم نگه میدارم.»
«تازهکاران و متخصصان به یک اندازه تازهترین تکنیکها در برنامهنویسی C# را در اینجا خواهند یافت.»
Twitter: @oreillymedia
linkedin.com/company/oreilly-media
youtube.com/oreillymedia
9 781098 147440
56999
US $69.99 CAN $87.99
ISBN: 978-1-098-14744-0
پکن • بوستون • فارنهام • سباستوپل • توکیوO’REILLY®
C# 12 در یک NUTSHELL
مرجع قطعی
Joseph Albahari
978-1-098-14744-0
[LSI]
C# 12 در یک Nutshell
نوشتهٔ Joseph Albahari
حقنشر © 2024 Joseph Albahari. همهٔ حقوق محفوظ است.
چاپشده در ایالات متحدهٔ آمریکا.
منتشرشده توسط O’Reilly Media, Inc.، نشانی: 1005 Gravenstein Highway North, Sebastopol, CA 95472.
کتابهای O’Reilly را میتوان برای استفادهٔ آموزشی، تجاری یا تبلیغات فروش خریداری کرد. نسخههای آنلاین نیز برای بیشتر عنوانها در دسترس هستند (http://oreilly.com). برای اطلاعات بیشتر با بخش فروش سازمانی/مؤسسهای تماس بگیرید: 800-998-9938 یا corporate@oreilly.com.
- Acquisitions Editor: Brian Guerin
- Development Editor: Corbin Collins
- Production Editor: Kristen Brown
- Copyeditor: Charles Roumeliotis
- Proofreader: Piper Editorial Consulting, LLC
- Indexer: WordCo Indexing Services, Inc.
- Interior Designer: David Futato
- Cover Designer: Karen Montgomery
- Illustrator: Kate Dullea
دسامبر 2023: ویرایش اول
تاریخچهٔ بازبینی برای ویرایش اول
2023-11-14: First Release
برای جزئیات انتشار، http://oreilly.com/catalog/errata.csp?isbn=9781098147440 را ببینید.
لوگوی O’Reilly علامت تجاری ثبتشدهٔ O’Reilly Media, Inc. است. C# 12 in a Nutshell، تصویر جلد و پوشش تجاری مرتبط، علامتهای تجاری O’Reilly Media, Inc. هستند.
دیدگاههای بیانشده در این اثر متعلق به نویسندهاند و نمایانگر دیدگاههای ناشر نیستند. با اینکه ناشر و نویسنده با حسن نیت کوشیدهاند از دقیقبودن اطلاعات و دستورالعملهای موجود در این اثر اطمینان حاصل کنند، ناشر و نویسنده تمام مسئولیت مربوط به خطاها یا حذفها را رد میکنند؛ از جمله، بدون محدودیت، مسئولیت خسارتهای ناشی از استفاده از یا اتکا به این اثر. استفاده از اطلاعات و دستورالعملهای موجود در این اثر با مسئولیت خود شماست. اگر هر نمونهٔ کد یا فناوری دیگری که این اثر دربردارد یا توصیف میکند مشمول مجوزهای متنباز یا حقوق مالکیت فکری دیگران باشد، مسئولیت اطمینان از انطباق استفادهٔ شما با چنین مجوزها و/یا حقوقی بر عهدهٔ شماست.
فهرست مطالب — صفحهٔ 5
| عنوان | صفحهٔ کتاب |
|---|
| پیشگفتار Preface | xi |
| 1. معرفی C# و .NET 1. Introducing C# and .NET | 1 |
| شیءگرایی Object Orientation | 1 |
| ایمنی نوع Type Safety | 2 |
| مدیریت حافظه Memory Management | 3 |
| پشتیبانی از پلتفرم Platform Support | 3 |
| CLRها، BCLها و Runtimeها CLRs, BCLs, and Runtimes | 3 |
| تاریخچهای کوتاه از C# A Brief History of C# | 8 |
| 2. مبانی زبان C# 2. C# Language Basics | 31 |
| نخستین برنامهٔ C# A First C# Program | 31 |
| نحو Syntax | 34 |
| مبانی Type Type Basics | 36 |
| Typeهای عددی Numeric Types | 47 |
| Type بولی و Operatorها Boolean Type and Operators | 55 |
| رشتهها و کاراکترها Strings and Characters | 57 |
| آرایهها Arrays | 61 |
| متغیرها و پارامترها Variables and Parameters | 67 |
| Expressionها و Operatorها Expressions and Operators | 78 |
| Operatorهای Null Null Operators | 82 |
| دستورها Statements | 84 |
| Namespaceها Namespaces | 95 |
| 3. ایجاد Typeها در C# 3. Creating Types in C# | 103 |
| Classها Classes | 103 |
| وراثت Inheritance | 126 |
| Typeِ object The object Type | 138 |
| Structها Structs | 142 |
فهرست مطالب — صفحهٔ 6
| عنوان | صفحهٔ کتاب |
|---|
| Modifierهای دسترسی Access Modifiers | 145 |
| Interfaceها Interfaces | 147 |
| Enumها Enums | 154 |
| Typeهای تودرتو Nested Types | 157 |
| Genericها Generics | 159 |
| 4. C# پیشرفته 4. Advanced C# | 173 |
| Delegateها Delegates | 173 |
| Eventها Events | 181 |
| Lambda Expressionها Lambda Expressions | 188 |
| Methodهای ناشناس Anonymous Methods | 194 |
| Statementهای try و Exceptionها try Statements and Exceptions | 195 |
| Enumeration و Iteratorها Enumeration and Iterators | 203 |
| Value Typeهای Nullable Nullable Value Types | 210 |
| Reference Typeهای Nullable Nullable Reference Types | 215 |
| Extension Methodها Extension Methods | 217 |
| Typeهای ناشناس Anonymous Types | 220 |
| Tupleها Tuples | 222 |
| Recordها Records | 227 |
| Patternها Patterns | 238 |
| Attributeها Attributes | 243 |
| Attributeهای اطلاعات Caller Caller Info Attributes | 246 |
| Binding پویا Dynamic Binding | 248 |
| Overload کردن Operator Operator Overloading | 256 |
| چندریختی Static Static Polymorphism | 260 |
| کد Unsafe و Pointerها Unsafe Code and Pointers | 263 |
| Directiveهای Preprocessor Preprocessor Directives | 270 |
| مستندسازی XML XML Documentation | 272 |
| 5. نمای کلی .NET 5. .NET Overview | 277 |
| Targetهای Runtime و TFMها Runtime Targets and TFMs | 279 |
| .NET Standard .NET Standard | 279 |
| Assemblyهای Reference Reference Assemblies | 281 |
| نسخههای Runtime و زبان C# Runtime and C# Language Versions | 281 |
| CLR و BCL The CLR and BCL | 281 |
| لایههای Application Application Layers | 286 |
| 6. مبانی .NET 6. .NET Fundamentals | 291 |
| کار با String و Text String and Text Handling | 291 |
| تاریخها و زمانها Dates and Times | 304 |
فهرست مطالب — صفحهٔ 7
| عنوان | صفحهٔ کتاب |
|---|
| تاریخها و منطقههای زمانی Dates and Time Zones | 312 |
| Formatting و Parsing Formatting and Parsing | 317 |
| Format Stringهای استاندارد و Flagهای Parsing Standard Format Strings and Parsing Flags | 323 |
| سازوکارهای دیگر Conversion Other Conversion Mechanisms | 330 |
| Globalization Globalization | 334 |
| کار با اعداد Working with Numbers | 335 |
| Enumها Enums | 340 |
| Structِ Guid The Guid Struct | 344 |
| مقایسهٔ برابری Equality Comparison | 344 |
| مقایسهٔ ترتیب Order Comparison | 355 |
| Classهای Utility Utility Classes | 358 |
| 7. Collectionها 7. Collections | 365 |
| Enumeration Enumeration | 366 |
| Interfaceهای ICollection و IList The ICollection and IList Interfaces | 373 |
| Classِ Array The Array Class | 377 |
| Listها، Queueها، Stackها و Setها Lists, Queues, Stacks, and Sets | 385 |
| Dictionaryها Dictionaries | 394 |
| Collectionهای قابل سفارشیسازی و Proxyها Customizable Collections and Proxies | 401 |
| Collectionهای Immutable Immutable Collections | 406 |
| Collectionهای Frozen Frozen Collections | 410 |
| متصلکردن Equality و Order Plugging in Equality and Order | 411 |
| 8. Queryهای LINQ 8. LINQ Queries | 419 |
| شروع کار Getting Started | 419 |
| Syntax روان (Fluent) Fluent Syntax | 421 |
| Query Expressionها Query Expressions | 427 |
| اجرای Deferred Deferred Execution | 432 |
| Subqueryها Subqueries | 438 |
| راهبردهای Composition Composition Strategies | 442 |
| راهبردهای Projection Projection Strategies | 445 |
| Queryهای Interpreted Interpreted Queries | 448 |
| EF Core EF Core | 454 |
| ساخت Query Expressionها Building Query Expressions | 466 |
| 9. Operatorهای LINQ 9. LINQ Operators | 471 |
| نمای کلی Overview | 472 |
| Filtering Filtering | 475 |
| Projecting Projecting | 480 |
| Joining Joining | 492 |
فهرست مطالب — صفحهٔ 8
| عنوان | صفحهٔ کتاب |
|---|
| Ordering Ordering | 500 |
| Grouping Grouping | 503 |
| Operatorهای Set Set Operators | 507 |
| Methodهای Conversion Conversion Methods | 509 |
| Operatorهای Element Element Operators | 512 |
| Methodهای Aggregation Aggregation Methods | 514 |
| Quantifierها Quantifiers | 519 |
| Methodهای Generation Generation Methods | 520 |
| 10. LINQ to XML 10. LINQ to XML | 521 |
| نمای کلی معماری Architectural Overview | 521 |
| نمای کلی X-DOM X-DOM Overview | 522 |
| ساخت Instance از X-DOM Instantiating an X-DOM | 526 |
| Navigation و Query Navigating and Querying | 528 |
| Update کردن X-DOM Updating an X-DOM | 534 |
| کار با Valueها Working with Values | 537 |
| Documentها و Declarationها Documents and Declarations | 539 |
| Nameها و Namespaceها Names and Namespaces | 543 |
| Annotationها Annotations | 548 |
| Projection به X-DOM Projecting into an X-DOM | 549 |
| 11. فناوریهای دیگر XML و JSON 11. Other XML and JSON Technologies | 553 |
| XmlReader XmlReader | 553 |
| XmlWriter XmlWriter | 561 |
| Patternهای استفاده از XmlReader/XmlWriter Patterns for Using XmlReader/XmlWriter | 563 |
| کار با JSON Working with JSON | 568 |
| 12. Disposal و Garbage Collection 12. Disposal and Garbage Collection | 581 |
| IDisposable، Dispose و Close IDisposable, Dispose, and Close | 581 |
| Garbage Collection خودکار Automatic Garbage Collection | 587 |
| Finalizerها Finalizers | 589 |
| نحوهٔ کار GC How the GC Works | 593 |
| نشتهای حافظهٔ Managed Managed Memory Leaks | 600 |
| Weak Referenceها Weak References | 603 |
| 13. Diagnostics 13. Diagnostics | 607 |
| Compilation شرطی Conditional Compilation | 607 |
| Classهای Debug و Trace Debug and Trace Classes | 611 |
| یکپارچهسازی Debugger Debugger Integration | 614 |
| Processها و Threadهای Process Processes and Process Threads | 615 |
فهرست مطالب — صفحهٔ 9
| عنوان | صفحهٔ کتاب |
|---|
| StackTrace و StackFrame StackTrace and StackFrame | 616 |
| Event Logهای Windows Windows Event Logs | 618 |
| Counterهای Performance Performance Counters | 620 |
| Classِ Stopwatch The Stopwatch Class | 624 |
| ابزارهای Diagnostic چندپلتفرمی Cross-Platform Diagnostic Tools | 625 |
| 14. Concurrency و Asynchrony 14. Concurrency and Asynchrony | 631 |
| مقدمه Introduction | 631 |
| Threading Threading | 632 |
| Taskها Tasks | 648 |
| اصول Asynchrony Principles of Asynchrony | 656 |
| Functionهای Asynchronous در C# Asynchronous Functions in C# | 661 |
| Patternهای Asynchronous Asynchronous Patterns | 681 |
| Patternهای منسوخ Obsolete Patterns | 689 |
| 15. Streamها و I/O 15. Streams and I/O | 693 |
| معماری Stream Stream Architecture | 693 |
| استفاده از Streamها Using Streams | 695 |
| Adapterهای Stream Stream Adapters | 709 |
| Streamهای فشردهسازی Compression Streams | 718 |
| کار با Fileهای ZIP Working with ZIP Files | 721 |
| کار با Fileهای Tar Working with Tar Files | 722 |
| عملیات File و Directory File and Directory Operations | 723 |
| امنیت OS OS Security | 733 |
| Fileهای Memory-Mapped Memory-Mapped Files | 736 |
| 16. Networking 16. Networking | 741 |
| معماری Network Network Architecture | 741 |
| Addressها و Portها Addresses and Ports | 743 |
| URIها URIs | 744 |
| HttpClient HttpClient | 746 |
| نوشتن HTTP Server Writing an HTTP Server | 755 |
| استفاده از DNS Using DNS | 758 |
| ارسال Mail با SmtpClient Sending Mail with SmtpClient | 758 |
| استفاده از TCP Using TCP | 759 |
| دریافت Mail از POP3 با TCP Receiving POP3 Mail with TCP | 763 |
| 17. Assemblyها 17. Assemblies | 765 |
| درون یک Assembly چیست What’s in an Assembly | 765 |
| Strong Nameها و Signingِ Assembly Strong Names and Assembly Signing | 770 |
فهرست مطالب — صفحهٔ 10
| عنوان | صفحهٔ کتاب |
|---|
| نامهای Assembly Assembly Names | 771 |
| Signing با Authenticode Authenticode Signing | 773 |
| Resourceها و Satellite Assemblyها Resources and Satellite Assemblies | 776 |
| Load، Resolve و Isolate کردن Assemblyها Loading, Resolving, and Isolating Assemblies | 783 |
| 18. Reflection و Metadata 18. Reflection and Metadata | 805 |
| Reflect و Activate کردن Typeها Reflecting and Activating Types | 806 |
| Reflect و Invoke کردن Memberها Reflecting and Invoking Members | 813 |
| Reflect کردن Assemblyها Reflecting Assemblies | 827 |
| کار با Attributeها Working with Attributes | 828 |
| تولید Dynamic Code Dynamic Code Generation | 834 |
| Emit کردن Assemblyها و Typeها Emitting Assemblies and Types | 841 |
| Emit کردن Memberهای Type Emitting Type Members | 844 |
| Emit کردن Methodها و Typeهای Generic Emitting Generic Methods and Types | 849 |
| Targetهای دشوار برای Emission Awkward Emission Targets | 851 |
| Parsingِ IL Parsing IL | 855 |
| 19. برنامهنویسی Dynamic 19. Dynamic Programming | 861 |
| Dynamic Language Runtime The Dynamic Language Runtime | 861 |
| Resolution پویا برای Overloadهای Member Dynamic Member Overload Resolution | 863 |
| پیادهسازی Objectهای Dynamic Implementing Dynamic Objects | 869 |
| Interoperability با زبانهای Dynamic Interoperating with Dynamic Languages | 872 |
| 20. Cryptography 20. Cryptography | 875 |
| نمای کلی Overview | 875 |
| Data Protection در Windows Windows Data Protection | 876 |
| Hashing Hashing | 877 |
| Encryption متقارن Symmetric Encryption | 879 |
| Encryption و Signing با Public Key Public-Key Encryption and Signing | 884 |
| 21. Threading پیشرفته 21. Advanced Threading | 889 |
| نمای کلی Synchronization Synchronization Overview | 890 |
| Locking انحصاری Exclusive Locking | 890 |
| Locking و Thread Safety Locking and Thread Safety | 898 |
| Locking غیرانحصاری Nonexclusive Locking | 904 |
| Signaling با Event Wait Handleها Signaling with Event Wait Handles | 911 |
| Classِ Barrier The Barrier Class | 919 |
| Initialization بهصورت Lazy Lazy Initialization | 920 |
| Storage محلی Thread Thread-Local Storage | 923 |
| Timerها Timers | 926 |
فهرست مطالب — صفحهٔ 11
| عنوان | صفحهٔ کتاب |
|---|
| 22. برنامهنویسی Parallel 22. Parallel Programming | 931 |
| چرا PFX؟ Why PFX? | 932 |
| PLINQ PLINQ | 935 |
| Classِ Parallel The Parallel Class | 948 |
| Parallelism با Task Task Parallelism | 954 |
| کار با AggregateException Working with AggregateException | 964 |
| Collectionهای Concurrent Concurrent Collections | 966 |
| BlockingCollection<T> BlockingCollection<T> | 969 |
| 23. Span<T> و Memory<T> 23. Span<T> and Memory<T> | 973 |
| Spanها و Slicing Spans and Slicing | 974 |
| Memory<T> Memory<T> | 978 |
| Enumeratorهای فقط روبهجلو Forward-Only Enumerators | 980 |
| کار با حافظهٔ Stack-Allocated و Unmanaged Working with Stack-Allocated and Unmanaged Memory | 982 |
| 24. Interoperability با Native و COM 24. Native and COM Interoperability | 985 |
| فراخوانی Native DLLها Calling into Native DLLs | 985 |
| Marshalingِ Type و Parameter Type and Parameter Marshaling | 986 |
| Callback از کد Unmanaged Callbacks from Unmanaged Code | 991 |
| شبیهسازی Union در C Simulating a C Union | 994 |
| حافظهٔ Shared Shared Memory | 995 |
| نگاشت Struct به حافظهٔ Unmanaged Mapping a Struct to Unmanaged Memory | 997 |
| COM Interoperability COM Interoperability | 1001 |
| فراخوانی Componentِ COM از C# Calling a COM Component from C# | 1003 |
| Embed کردن Interop Typeها Embedding Interop Types | 1006 |
| Expose کردن Objectهای C# به COM Exposing C# Objects to COM | 1007 |
| 25. Regular Expressionها 25. Regular Expressions | 1011 |
| مبانی Regular Expression Regular Expression Basics | 1011 |
| Quantifierها Quantifiers | 1016 |
| Assertionهای Zero-Width Zero-Width Assertions | 1017 |
| Groupها Groups | 1020 |
| جایگزینی و Split کردن Text Replacing and Splitting Text | 1022 |
| Regular Expressionهای کاربردی (Cookbook) Cookbook Regular Expressions | 1023 |
| مرجع زبان Regular Expression Regular Expressions Language Reference | 1027 |
| نمایه Index | 1031 |
[این صفحه در فایل اصلی بدون متن است.]
پیشگفتار
C# 12 نهمین بهروزرسانی عمدهٔ زبان برنامهنویسی شاخص Microsoft را نمایندگی میکند و C# را بهعنوان زبانی با انعطافپذیری و گسترهای غیرمعمول قرار میدهد. در یک سوی طیف، abstractionهای سطح بالا مانند query expressionها و asynchronous continuationها را ارائه میکند؛ در سوی دیگر، از طریق constructهایی مانند custom value typeها و pointerهای اختیاری، بهرهوری سطح پایین را ممکن میسازد.
بهای این رشد آن است که بیش از همیشه چیز برای یادگیری وجود دارد. هرچند ابزارهایی مانند IntelliSense شرکت Microsoft—و referenceهای آنلاین—برای کمک به شما در کار روزمره عالیاند، آنها وجود یک نقشهٔ ازپیشموجود از دانش مفهومی را فرض میکنند. این کتاب دقیقاً همان نقشهٔ دانش را در سبکی موجز و یکپارچه—عاری از شلوغی و مقدمههای طولانی—فراهم میکند.
همانند هفت ویرایش گذشته، C# 12 in a Nutshell حول مفهومها و use caseها سازماندهی شده است و هم برای خواندن ترتیبی و هم برای مرور تصادفی مناسب است. در عین حال به عمق قابلتوجهی میرود، در حالی که فقط دانش پایهای پیشزمینه را فرض میکند؛ بنابراین هم برای خوانندگان سطح متوسط و هم پیشرفته قابلدسترسی است.
این کتاب C#، Common Language Runtime (CLR) و Base Class Library (BCL) در .NET 8 را پوشش میدهد. این تمرکز را انتخاب کردهایم تا برای موضوعات دشوار و پیشرفته فضا داشته باشیم، بدون اینکه عمق یا خوانایی قربانی شود. قابلیتهایی که اخیراً به C# افزوده شدهاند علامتگذاری شدهاند تا بتوانید از این کتاب بهعنوان مرجع C# 11 و C# 10 نیز استفاده کنید.
مخاطبان موردنظر
این کتاب مخاطبان سطح متوسط تا پیشرفته را هدف گرفته است. دانش قبلی C# لازم نیست، اما مقداری تجربهٔ عمومی برنامهنویسی ضروری است. برای تازهکار، این کتاب مکمل یک مقدمهٔ tutorial-style برای برنامهنویسی است، نه جایگزین آن.
این کتاب همراهی ایدهآل برای مجموعهٔ گستردهای از کتابهاست که روی یک فناوری کاربردی مانند ASP.NET Core یا Windows Presentation Foundation (WPF) تمرکز دارند. C# 12 in a Nutshell حوزههایی از زبان و .NET را پوشش میدهد که چنین کتابهایی حذف میکنند، و برعکس.
اگر به دنبال کتابی هستید که فقط سطح همهٔ فناوریهای .NET را مرور کند، این کتاب برای شما نیست. همچنین اگر میخواهید دربارهٔ APIهای ویژهٔ توسعهٔ deviceهای mobile یاد بگیرید، این کتاب مناسب نیست.
این کتاب چگونه سازماندهی شده است
فصلهای 2 تا 4 صرفاً روی C# تمرکز دارند؛ از مبانی syntax، typeها و variableها آغاز میکنند و با موضوعات پیشرفتهای مانند unsafe code و preprocessor directiveها پایان مییابند. اگر با زبان تازه آشنا میشوید، باید این فصلها را بهترتیب بخوانید.
فصلهای باقیمانده بر Base Class Libraryهای .NET 8 تمرکز دارند و موضوعاتی مانند Language-Integrated Query (LINQ)، XML، collectionها، concurrency، I/O و networking، مدیریت حافظه، reflection، برنامهنویسی dynamic، attributeها، cryptography و native interoperability را پوشش میدهند. بیشتر این فصلها را میتوانید بهصورت تصادفی بخوانید، بهجز فصلهای 5 و 6 که پایهای برای موضوعات بعدی میسازند. همچنین بهتر است سه فصل LINQ را بهترتیب بخوانید و برخی فصلها مقداری دانش concurrency را فرض میکنند که در فصل 14 پوشش میدهیم.
برای استفاده از این کتاب به چه چیزهایی نیاز دارید
مثالهای این کتاب به .NET 8 نیاز دارند. مستندات .NET شرکت Microsoft نیز برای جستوجوی typeها و memberهای منفرد مفید خواهند بود (و بهصورت آنلاین در دسترساند).
اگرچه میتوان source code را در یک text editor ساده نوشت و برنامه را از command line build کرد، با یک code scratchpad برای آزمایش فوری code snippetها و یک integrated development environment (IDE) برای تولید executableها و libraryها بسیار بهرهورتر خواهید بود.
برای code scratchpad در Windows، LINQPad 8 را از www.linqpad.net دریافت کنید (رایگان). LINQPad بهطور کامل از C# 12 پشتیبانی میکند و توسط نویسنده نگهداری میشود.
برای IDE در Windows، Visual Studio 2022 را دریافت کنید: هر ویرایشی برای مطالب این کتاب مناسب است. برای IDE چندپلتفرمی، Visual Studio Code را دریافت کنید.
قراردادهای استفادهشده در این کتاب
کتاب برای نشاندادن رابطههای میان typeها از notation پایهٔ UML استفاده میکند، همانطور که در شکل P-1 نشان داده شده است. یک مستطیل مایل به معنای abstract class است؛ یک دایره به معنای interface است. خطی با triangle توخالی inheritance را نشان میدهد و triangle به سمت base type اشاره میکند. خطی با arrow یک association یکطرفه را نشان میدهد؛ خط بدون arrow یک association دوطرفه را نشان میدهد.
شکل P-1. نمودار نمونه
قراردادهای typographical زیر در این کتاب استفاده میشوند:
- Italic
- اصطلاحهای جدید، URIها، filenameها و directoryها را نشان میدهد.
Constant width- کد C#، keywordها و identifierها، و خروجی برنامه را نشان میدهد.
Constant width bold- بخش highlightشدهای از code را نشان میدهد.
Constant width italic- متنی را نشان میدهد که باید با valueهای ارائهشده توسط کاربر جایگزین شود.
استفاده از مثالهای کد
مطالب تکمیلی (مثالهای code، تمرینها و غیره) برای دریافت در http://www.albahari.com/nutshell در دسترس است.
این کتاب برای کمک به انجام کار شماست. بهطور کلی، میتوانید codeهای این کتاب را در برنامهها و مستندات خود استفاده کنید. مگر اینکه بخش قابلتوجهی از code را بازتولید کنید، نیازی نیست برای permission با ما تماس بگیرید. برای مثال، نوشتن برنامهای که از چند قطعه code این کتاب استفاده میکند نیازی به permission ندارد. فروش یا توزیع مثالهای کتابهای O’Reilly نیازمند permission است. پاسخدادن به یک سؤال با استناد به این کتاب و نقل code نمونه نیازی به permission ندارد (هرچند از attribution قدردانی میکنیم). واردکردن مقدار قابلتوجهی از code نمونهٔ این کتاب در مستندات محصول شما نیازمند permission است.
از attribution قدردانی میکنیم، اما معمولاً آن را الزامی نمیدانیم. attribution معمولاً شامل عنوان، نویسنده، ناشر و ISBN است. برای مثال: «C# 12 in a Nutshell by Joseph Albahari (O’Reilly). Copyright 2024 Joseph Albahari, 978-1-098-14744-0.»
اگر احساس میکنید استفادهٔ شما از code exampleها خارج از fair use یا permission دادهشده در اینجا است، میتوانید با permissions@oreilly.com تماس بگیرید.
چگونه با ما تماس بگیرید
لطفاً دیدگاهها و پرسشهای مربوط به این کتاب را به ناشر ارسال کنید:
O’Reilly Media, Inc.
1005 Gravenstein Highway North
Sebastopol, CA 95472
800-889-8969 (in the United States or Canada)
707-829-7019 (international or local)
707-829-0104 (fax)
support@oreilly.com
https://www.oreilly.com/about/contact.html
برای این کتاب صفحهٔ webی داریم که errata، exampleها و هر اطلاعات اضافی را در آن فهرست میکنیم. این صفحه در https://oreil.ly/c-sharp-nutshell-12 در دسترس است.
code listingها و resourceهای اضافی در http://www.albahari.com/nutshell/ ارائه شدهاند.
برای خبر و اطلاعات دربارهٔ کتابها و دورههای ما: https://oreilly.com.
ما را در LinkedIn پیدا کنید: https://linkedin.com/company/oreilly-media
در Twitter دنبال کنید: https://twitter.com/oreillymedia
در YouTube ببینید: https://youtube.com/oreillymedia
قدردانیها
Joseph Albahari
از نخستین شکل این کتاب در سال 2007، این اثر به نظر برخی technical reviewerهای عالی متکی بوده است. برای مشارکتشان در ویرایشهای اخیر، بهطور ویژه از Stephen Toub، Paulo Morgado، Fred Silberberg، Vitek Karas، Aaron Robinson، Jan Vorlicek، Sam Gentile، Rod Stephens، Jared Parsons، Matthew Groves، Dixin Yan، Lee Coward، Bonnie DeWitt، Wonseok Chae، Lori Lalonde و James Montemagno تشکر میکنم.
و برای مشارکتشان در ویرایشهای پیشین، عمیقاً از Eric Lippert، Jon Skeet، Stephen Toub، Nicholas Paldino، Chris Burrows، Shawn Farkas، Brian Grunkemeyer، Maoni Stephens، David DeWinter، Mike Barnett، Melitta Andersen، Mitch Wheat، Brian Peek، Krzysztof Cwalina، Matt Warren، Joel Pobar، Glyn Griffiths، Ion Vasilian، Brad Abrams و Adam Nathan سپاسگزارم.
قدردانم که بسیاری از technical reviewerها افراد بسیار موفقی در Microsoft هستند، و بهطور ویژه از شما تشکر میکنم که وقت گذاشتید تا این کتاب را به سطح کیفی بالاتری برسانید.
میخواهم از Ben Albahari و Eric Johannsen که در ویرایشهای قبلی مشارکت داشتند و از تیم O’Reilly—بهویژه editor کارآمد و پاسخگوی من Corbin Collins—تشکر کنم. در پایان، عمیقترین سپاس من از همسر فوقالعادهام Li Albahari است که حضورش در تمام مدت پروژه مرا خوشحال نگه داشت.
[این صفحه در فایل اصلی بدون متن است.]