... of Wow! eBook ptg Effective C# 50 Specific Ways to Improve Your C# Second Edition Bill Wagner Upper Saddle River, NJ • Boston • Indianapolis • San Francisco New York • Toronto • Montreal • London ... 239 Item 41 : Use DynamicObject or IDynamicMetaObjectProvider for Data-Driven Dynamic Types 243 Item 42 : Understand How to Make Use of the Expression API 2 54 Item 43 :...
Ngày tải lên: 12/08/2014, 16:21
... Item 45 . For reference types, your instance method needs to follow pre- defined behavior to avoid strange surprises for users of your class. When- ever you override Equals(), you’ll want to implement ... "SomeSample.Size" is not what you want to display to your users. But that’s what you get when you don’t override ToString() in your classes. You write a class...
Ngày tải lên: 12/08/2014, 16:21
Effective C#50 Specific Ways to Improve Your C# Second Edition phần 3 docx
... helper method. Stop that, too. When you find that multiple constructors contain the same logic, fac- tor that logic into a common constructor instead. You’ll get the benefits of Item 14: Minimize ... logic to initialize static member variables, create a static constructor. Implementing the singleton pattern in C# is the most frequent use of a static constructor. Make your instance cons...
Ngày tải lên: 12/08/2014, 16:21
Effective C#50 Specific Ways to Improve Your C# Second Edition phần 4 pdf
... structure refers to the same array storage (phones) allocated outside the object. Developers can modify your immutable structure through another variable that refers to the same storage. To remove ... meant to store data values, value types are the way to go. The decision to make a value type or a reference type is an important one. It is a far-reaching change to turn a val...
Ngày tải lên: 12/08/2014, 16:21
Effective C#50 Specific Ways to Improve Your C# Second Edition phần 6 pptx
... Relational Operators. public static bool operator <(Customer left, Customer right) { return left.CompareTo(right) < 0; } public static bool operator <=(Customer left, Customer right) ... (!(obj is Customer)) throw new ArgumentException( "Argument is not a Customer", "obj"); Customer otherCustomer = (Customer)obj; return this.CompareTo(otherCustomer); } #en...
Ngày tải lên: 12/08/2014, 16:21
Effective C#50 Specific Ways to Improve Your C# Second Edition phần 7 ppt
... rules they might expect, they need to use casts: var obj4 = new D(); ((B)obj4).Foo(new D2()); obj4.Foo(new B2()); If your API forces this kind of construct on your users, you’ve failed. You can ... elided. } } This is a problem. Your base class snuck a method underneath your class’s naming scope. There are two ways to fix this. You could change that name of your Normalize...
Ngày tải lên: 12/08/2014, 16:21
Effective C#50 Specific Ways to Improve Your C# Second Edition phần 8 pps
... much work to do. Implementing dynamic behavior can be a great way to approach some of your programming challenges. When you look at creating dynamic types, your first choice should be to derive ... those costs greater. Item 42 : Understand How to Make Use of the Expression API .NET has had APIs that enable you to reflect on types or to create code at runtime. The ability to...
Ngày tải lên: 12/08/2014, 16:21
Effective C#50 Specific Ways to Improve Your C# 2nd phần 3 pps
... static constructors are called. And, yes, your static initializers execute before the base class’s static constructor. The CLR calls your static constructor automatically before your type is first ... that leads to unmaintainable code. If you want to convert another type into your type, use a constructor. This more clearly reflects the action of creating a new object. Conversio...
Ngày tải lên: 12/08/2014, 20:22