... 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 ... you. You likely need to attempt to cast those objects to other types, either classes or interfaces. You’ve got two choices: Use the as operator or force the compiler to...
Ngày tải lên: 12/08/2014, 16:21
... "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 once, but your clients use it many times. ... } #endregion // Nested class to provide the // custom formatting for the Customer class. private class CustomerFormatProvider : ICustomFormatter { #region ICust...
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
... are, stop it. Veteran C++ programmers would factor the common algorithms into a private helper method. Stop that, too. When you find that multiple constructors contain the same logic, fac- tor ... 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 const...
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
... element: 30 The query does not begin to execute until the first call to MoveNext() on the enumerator. The first call to MoveNext() executes the query on enough elements to retrieve the first element on ... 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 Nor...
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 ... itself dynamic. At some point, you’ll want to bring those dynamic objects back into the static type system used by most of your C# code. That’s going to require either a cast or...
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 ... complicated logic to initialize the singleton: public class MySingleton2 { private static readonly MySingleton2 theOneAndOnly; static MySingleton2() { theOneAndOnly = new MySingleton2...
Ngày tải lên: 12/08/2014, 20:22