Pro Aspnet MVC 4读书笔记(3) - Essential Language Features
Listing 4-1. The Initial Content of the Home Controller
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc; namespace LanguageFeatures.Controllers
{
public class HomeController : Controller
{
public string Index()
{
return "Navigate to a URL to show an example";
} }
}
Listing 4-2. The Contents of the Result View File
@model String
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Result</title>
</head>
<body>
<div>
@Model
</div>
</body>
</html>
Listing 4-3. Defining a Property
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web; namespace LanguageFeatures.Models
{
public class Product
{
private string name; public string Name
{
get { return name; }
set { name = value; }
}
}
}
Listing 4-4. Consuming a Property
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using LanguageFeatures.Models; namespace LanguageFeatures.Controllers
{
public class HomeController : Controller
{
public string Index()
{
return "Navigate to a URL to show an example";
} public ViewResult AutoProperty()
{
Product product = new Product();
product.Name = "Kayak"; string productName = product.Name; return View("Result", (object)String.Format("Product name: {0}", productName));
}
}
}
Listing 4-5. Verbose Property Definitions
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web; namespace LanguageFeatures.Models
{
public class Product
{
private int productId;
private string name;
private string description;
private decimal price;
private string category; public int ProductId
{
get { return productId; }
set { productId = value; }
} public string Name
{
get { return name; }
set { name = value; }
} public string Description
{
get { return description; }
set { description = value; }
} public decimal Price
{
get { return price; }
set { price = value; }
} public string Category
{
get { return category; }
set { category = value; }
}
}
}
Listing 4-6. Using Automatically Implemented Properties
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web; namespace LanguageFeatures.Models
{
public class Product
{
public int ProductId { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public decimal Price { get; set; }
public string Category { get; set; }
}
}
Listing 4-7. Reverting from an Automatic to a Regular Property
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web; namespace LanguageFeatures.Models
{
public class Product
{
private string name; public int ProductId { get; set; } public string Name
{
get {
return ProductId + name;
}
set {
name = value;
}
}
public string Description { get; set; }
public decimal Price { get; set; }
public string Category { get; set; }
}
}
Listing 4-8. Constructing and Initializing an Object with Properties
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using LanguageFeatures.Models; namespace LanguageFeatures.Controllers
{
public class HomeController : Controller
{
public string Index()
{
return "Navigate to a URL to show an example";
} public ViewResult AutoProperty()
{
Product product = new Product();
product.Name = "Kayak"; string productName = product.Name; return View("Result", (object)String.Format("Product name: {0}", productName));
} public ViewResult CreateProduct()
{
Product product = new Product();
product.ProductId = ;
product.Name = "Kayak";
product.Description = "A boat for one person";
product.Price = 275M;
product.Category = "Watersports"; return View("Result", (object)String.Format("Category: {0}", product.Category));
}
}
}
Listing 4-9. Using the Object Initializer Feature
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using LanguageFeatures.Models; namespace LanguageFeatures.Controllers
{
public class HomeController : Controller
{
public string Index()
{
return "Navigate to a URL to show an example";
} public ViewResult AutoProperty()
{
Product product = new Product();
product.Name = "Kayak"; string productName = product.Name; return View("Result", (object)String.Format("Product name: {0}", productName));
} public ViewResult CreateProduct()
{
Product product = new Product {
ProductId = ,
Name = "Kayak",
Description = "A boat for one person",
Price = 275M,
Category = "Waterports"
}; return View("Result", (object)String.Format("Category: {0}", product.Category));
}
}
}
Listing 4-10. Initializing Collections and Arrays
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using LanguageFeatures.Models; namespace LanguageFeatures.Controllers
{
public class HomeController : Controller
{
public string Index()
{
return "Navigate to a URL to show an example";
} public ViewResult AutoProperty()
{
Product product = new Product();
product.Name = "Kayak"; string productName = product.Name; return View("Result", (object)String.Format("Product name: {0}", productName));
} public ViewResult CreateProduct()
{
Product product = new Product {
ProductId = ,
Name = "Kayak",
Description = "A boat for one person",
Price = 275M,
Category = "Waterports"
}; return View("Result", (object)String.Format("Category: {0}", product.Category));
} public ViewResult CreateCollection()
{
string[] stringArray = { "apple", "orange", "plum"};
List<int> intList = new List<int> { , , , };
Dictionary<string, int> dict = new Dictionary<string, int> {
{ "apple", },
{ "orange", },
{ "plum", }
}; return View("Result", (object)stringArray[]);
}
}
}
Listing 4-11. The ShoppingCart Class
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web; namespace LanguageFeatures.Models
{
public class ShoppingCart
{
public List<Product> Products { get; set; }
}
}
Listing 4-12. Defining an Extension Method
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web; namespace LanguageFeatures.Models
{
public static class MyExtensionMethods
{
public static decimal TotalPrices(this ShoppingCart cart)
{
decimal total = ; foreach (Product prod in cart.Products)
{
total += prod.Price;
} return total;
}
}
}
Listing 4-13. Applying an Extension Method
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using LanguageFeatures.Models; namespace LanguageFeatures.Controllers
{
public class HomeController : Controller
{
public string Index()
{
return "Navigate to a URL to show an example";
} // Other action methods omitted for brevity public ViewResult UseExtension()
{
// Create and populate ShoppingCart
ShoppingCart cart = new ShoppingCart
{
Products = new List<Product> {
new Product{Name = "Kayak", Price = 275M},
new Product{Name = "Lifejacket", Price = 48.95M},
new Product{Name = "Soccer ball", Price = 19.50M},
new Product{Name = "Corner flag", Price = 34.95M}
}
}; // Get the total value of the products in the cart
decimal cartTotal = cart.TotalPrices(); return View("Result", (object)String.Format("Total: {0:c}", cartTotal));
}
}
}
Listing 4-14. Implementing an Interface in the ShoppingCart Class
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Web; namespace LanguageFeatures.Models
{
public class ShoppingCart : IEnumerable<Product>
{
public List<Product> Products { get; set; } public IEnumerator<Product> GetEnumerator()
{
return Products.GetEnumerator();
} IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
}
Listing 4-15. An Extension Method That Works on an Interface
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web; namespace LanguageFeatures.Models
{
public static class MyExtensionMethods
{
public static decimal TotalPrices(this IEnumerable<Product> productEnum)
{
decimal total = ; foreach (Product prod in productEnum)
{
total += prod.Price;
} return total;
}
}
}
Listing 4-16. Applying an Extension Method to Different Implementations of the Same Interface
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using LanguageFeatures.Models; namespace LanguageFeatures.Controllers
{
public class HomeController : Controller
{
public string Index()
{
return "Navigate to a URL to show an example";
} // Other action methods omitted for brevity public ViewResult UseExtensionEnumerable()
{
IEnumerable<Product> products = new ShoppingCart
{
Products = new List<Product> {
new Product{Name = "Kayak", Price = 275M},
new Product{Name = "Lifejacket", Price = 48.95M},
new Product{Name = "Soccer ball", Price = 19.50M},
new Product{Name = "Corner flag", Price = 34.95M}
}
}; Product[] productArray = {
new Product{Name = "Kayak", Price = 275M},
new Product{Name = "Lifejacket", Price = 48.95M},
new Product{Name = "Soccer ball", Price = 19.50M},
new Product{Name = "Corner flag", Price = 34.95M}
}; decimal cartTotal = products.TotalPrices();
decimal arrayTotal = productArray.TotalPrices(); return View("Result",
(object)String.Format("Cart Total: {0}, Array Total: {1}",
cartTotal, arrayTotal));
}
}
}
Listing 4-17. A Filtering Extension Method
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web; namespace LanguageFeatures.Models
{
public static class MyExtensionMethods
{
public static decimal TotalPrices(this IEnumerable<Product> productEnum)
{
decimal total = ; foreach (Product prod in productEnum)
{
total += prod.Price;
} return total;
} public static IEnumerable<Product> FilterByCategory(
this IEnumerable<Product> productEnum, string category)
{
foreach (Product prod in productEnum)
{
if (prod.Category == category)
{
yield return prod;
}
}
}
}
}
Listing 4-18. Using the Filtering Extension Method
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using LanguageFeatures.Models; namespace LanguageFeatures.Controllers
{
public class HomeController : Controller
{
public string Index()
{
return "Navigate to a URL to show an example";
} // Other action methods omitted for brevity public ViewResult UseFilterExtensionMethod()
{
IEnumerable<Product> products = new ShoppingCart
{
Products = new List<Product> {
new Product{Name = "Kayak", Category = "Watersports", Price = 275M},
new Product{Name = "Lifejacket", Category = "Watersports", Price = 48.95M},
new Product{Name = "Soccer ball", Category = "Soccer", Price = 19.50M},
new Product{Name = "Corner flag", Category = "Soccer", Price = 34.95M}
}
}; decimal total = ; foreach (Product prod in products.FilterByCategory("Soccer"))
{
total += prod.Price;
} return View("Result", (object)String.Format("Total: {0}", total));
}
}
}
Listing 4-19. Using a Delegate in an Extension Method
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web; namespace LanguageFeatures.Models
{
public static class MyExtensionMethods
{
public static decimal TotalPrices(this IEnumerable<Product> productEnum)
{
decimal total = ; foreach (Product prod in productEnum)
{
total += prod.Price;
} return total;
} public static IEnumerable<Product> FilterByCategory(
this IEnumerable<Product> productEnum, string category)
{
foreach (Product prod in productEnum)
{
if (prod.Category == category)
{
yield return prod;
}
}
} public static IEnumerable<Product> Filter(
this IEnumerable<Product> productEnum, Func<Product, bool> selector)
{
foreach (Product prod in productEnum)
{
if (selector(prod))
{
yield return prod;
}
}
}
}
}
Listing 4-20. Using the Filtering Extension Method with a Func
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using LanguageFeatures.Models; namespace LanguageFeatures.Controllers
{
public class HomeController : Controller
{
public string Index()
{
return "Navigate to a URL to show an example";
} // Other action methods omitted for brevity public ViewResult UseFilterExtensionMethod()
{
IEnumerable<Product> products = new ShoppingCart
{
Products = new List<Product> {
new Product{Name = "Kayak", Category = "Watersports", Price = 275M},
new Product{Name = "Lifejacket", Category = "Watersports", Price = 48.95M},
new Product{Name = "Soccer ball", Category = "Soccer", Price = 19.50M},
new Product{Name = "Corner flag", Category = "Soccer", Price = 34.95M}
}
}; Func<Product, bool> categoryFilter = delegate(Product prod)
{
return prod.Category == "Soccer";
}; decimal total = ; foreach (Product prod in products.Filter(categoryFilter))
{
total += prod.Price;
} return View("Result", (object)String.Format("Total: {0}", total));
}
}
}
Listing 4-21. Using a Lambda Expression to Replace a Delegate Definition
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using LanguageFeatures.Models; namespace LanguageFeatures.Controllers
{
public class HomeController : Controller
{
public string Index()
{
return "Navigate to a URL to show an example";
} // Other action methods omitted for brevity public ViewResult UseFilterExtensionMethod()
{
IEnumerable<Product> products = new ShoppingCart
{
Products = new List<Product> {
new Product{Name = "Kayak", Category = "Watersports", Price = 275M},
new Product{Name = "Lifejacket", Category = "Watersports", Price = 48.95M},
new Product{Name = "Soccer ball", Category = "Soccer", Price = 19.50M},
new Product{Name = "Corner flag", Category = "Soccer", Price = 34.95M}
}
}; Func<Product, bool> categoryFilter = prod => prod.Category == "Soccer"; decimal total = ; foreach (Product prod in products.Filter(categoryFilter))
{
total += prod.Price;
} return View("Result", (object)String.Format("Total: {0}", total));
}
}
}
Listing 4-22. A Lambda Expression Without a Func
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using LanguageFeatures.Models; namespace LanguageFeatures.Controllers
{
public class HomeController : Controller
{
public string Index()
{
return "Navigate to a URL to show an example";
} // Other action methods omitted for brevity public ViewResult UseFilterExtensionMethod()
{
IEnumerable<Product> products = new ShoppingCart
{
Products = new List<Product> {
new Product{Name = "Kayak", Category = "Watersports", Price = 275M},
new Product{Name = "Lifejacket", Category = "Watersports", Price = 48.95M},
new Product{Name = "Soccer ball", Category = "Soccer", Price = 19.50M},
new Product{Name = "Corner flag", Category = "Soccer", Price = 34.95M}
}
}; decimal total = ; foreach (Product prod in products.Filter(prod => prod.Category == "Soccer"))
{
total += prod.Price;
} return View("Result", (object)String.Format("Total: {0}", total));
}
}
}
Listing 4-23. Extending the Filtering Expressed by the Lambda Expression
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using LanguageFeatures.Models; namespace LanguageFeatures.Controllers
{
public class HomeController : Controller
{
public string Index()
{
return "Navigate to a URL to show an example";
} // Other action methods omitted for brevity public ViewResult UseFilterExtensionMethod()
{
IEnumerable<Product> products = new ShoppingCart
{
Products = new List<Product> {
new Product{Name = "Kayak", Category = "Watersports", Price = 275M},
new Product{Name = "Lifejacket", Category = "Watersports", Price = 48.95M},
new Product{Name = "Soccer ball", Category = "Soccer", Price = 19.50M},
new Product{Name = "Corner flag", Category = "Soccer", Price = 34.95M}
}
}; decimal total = ; foreach (Product prod in products.Filter(
prod => prod.Category == "Soccer" || prod.Price > ))
{
total += prod.Price;
} return View("Result", (object)String.Format("Total: {0}", total));
}
}
}
Listing 4-24. Using Type Inference
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using LanguageFeatures.Models; namespace LanguageFeatures.Controllers
{
public class HomeController : Controller
{
public string Index()
{
return "Navigate to a URL to show an example";
} // Other action methods omitted for brevity public ViewResult UseTypeInference()
{
var myVariable = new Product { Name = "Kayak", Category = "Watersports", Price = 275M }; string name = myVariable.Name; // Legal
int price = myVariable.Price; // Compiler error return View("Result", (object)String.Format("Name: {0}, Price: {1}", name, price));
}
}
}
Listing 4-25. Creating an Anonymous Type
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using LanguageFeatures.Models; namespace LanguageFeatures.Controllers
{
public class HomeController : Controller
{
public string Index()
{
return "Navigate to a URL to show an example";
} // Other action methods omitted for brevity public ViewResult UseTypeInference()
{
var myAnonType = new { Name = "Kayak", Category = "Watersports", Price = 275M }; string name = myAnonType.Name;
decimal price = myAnonType.Price; return View("Result", (object)String.Format("Name: {0}, Price: {1}", name, price));
}
}
}
Listing 4-26. Creating an Array of Anonymously Typed Objects
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.Mvc;
using LanguageFeatures.Models; namespace LanguageFeatures.Controllers
{
public class HomeController : Controller
{
public string Index()
{
return "Navigate to a URL to show an example";
} // Other action methods omitted for brevity public ViewResult CreateAnonArray()
{
var oddsAnonEnds = new[] {
new {Name = "MVC", Category = "Pattern"},
new {Name = "Hat", Category = "Clothing"},
new {Name = "Apple", Category = "Fruit"}
}; StringBuilder result = new StringBuilder();
foreach (var item in oddsAnonEnds)
{
result.Append(item.Name).Append(" ");
} return View("Result", (object)result.ToString());
}
}
}
Listing 4-27. Querying Without LINQ
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.Mvc;
using LanguageFeatures.Models; namespace LanguageFeatures.Controllers
{
public class HomeController : Controller
{
public string Index()
{
return "Navigate to a URL to show an example";
} // Other action methods omitted for brevity public ViewResult FindProducts()
{
Product[] products =
{
new Product {Name = "Kayak", Category = "Watersports", Price = 275M},
new Product {Name = "Lifejacket", Category = "Watersports", Price = 48.95M},
new Product {Name = "Soccer ball", Category = "Soccer", Price = 19.50M},
new Product {Name = "Corner flag", Category = "Soccer", Price = 34.95M}
}; Product[] foundProducts = new Product[]; Array.Sort(products, (item1, item2) => {
return Comparer<decimal>.Default.Compare(item1.Price, item2.Price);
}); Array.Copy(products, foundProducts, ); StringBuilder result = new StringBuilder();
foreach (Product p in foundProducts)
{
result.AppendFormat("Price: {0} ", p.Price);
} return View("Result", (object)result.ToString());
}
}
}
Listing 4-28. Using LINQ to Query Data
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.Mvc;
using LanguageFeatures.Models; namespace LanguageFeatures.Controllers
{
public class HomeController : Controller
{
public string Index()
{
return "Navigate to a URL to show an example";
} // Other action methods omitted for brevity public ViewResult FindProducts()
{
Product[] products =
{
new Product {Name = "Kayak", Category = "Watersports", Price = 275M},
new Product {Name = "Lifejacket", Category = "Watersports", Price = 48.95M},
new Product {Name = "Soccer ball", Category = "Soccer", Price = 19.50M},
new Product {Name = "Corner flag", Category = "Soccer", Price = 34.95M}
}; var foundProducts = from match in products
orderby match.Price descending
select new {
match.Name,
match.Price
}; int count = ; StringBuilder result = new StringBuilder();
foreach (var p in foundProducts)
{
result.AppendFormat("Price: {0} ", p.Price);
if (++count == )
{
break;
}
} return View("Result", (object)result.ToString());
}
}
}
Listing 4-29. Using LINQ Dot Notation
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.Mvc;
using LanguageFeatures.Models; namespace LanguageFeatures.Controllers
{
public class HomeController : Controller
{
public string Index()
{
return "Navigate to a URL to show an example";
} // Other action methods omitted for brevity public ViewResult FindProducts()
{
Product[] products =
{
new Product {Name = "Kayak", Category = "Watersports", Price = 275M},
new Product {Name = "Lifejacket", Category = "Watersports", Price = 48.95M},
new Product {Name = "Soccer ball", Category = "Soccer", Price = 19.50M},
new Product {Name = "Corner flag", Category = "Soccer", Price = 34.95M}
}; var foundProducts = products.OrderByDescending(e => e.Price)
.Take()
.Select(e => new {
e.Name,
e.Price
}); int count = ; StringBuilder result = new StringBuilder();
foreach (var p in foundProducts)
{
result.AppendFormat("Price: {0} ", p.Price);
if (++count == )
{
break;
}
} return View("Result", (object)result.ToString());
}
}
}
Listing 4-30. Using Deferred LINQ Extension Methods in a Query
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.Mvc;
using LanguageFeatures.Models; namespace LanguageFeatures.Controllers
{
public class HomeController : Controller
{
public string Index()
{
return "Navigate to a URL to show an example";
} // Other action methods omitted for brevity public ViewResult FindProducts()
{
Product[] products =
{
new Product {Name = "Kayak", Category = "Watersports", Price = 275M},
new Product {Name = "Lifejacket", Category = "Watersports", Price = 48.95M},
new Product {Name = "Soccer ball", Category = "Soccer", Price = 19.50M},
new Product {Name = "Corner flag", Category = "Soccer", Price = 34.95M}
}; var foundProducts = products.OrderByDescending(e => e.Price)
.Take()
.Select(e => new {
e.Name,
e.Price
}); products[] = new Product { Name = "Stadium", Price = 79600M }; StringBuilder result = new StringBuilder();
foreach (var p in foundProducts)
{
result.AppendFormat("Price: {0} ", p.Price);
} return View("Result", (object)result.ToString());
}
}
}
Listing 4-31. An Immediately Executed LINQ Query
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.Mvc;
using LanguageFeatures.Models; namespace LanguageFeatures.Controllers
{
public class HomeController : Controller
{
public string Index()
{
return "Navigate to a URL to show an example";
} // Other action methods omitted for brevity public ViewResult SumProducts()
{
Product[] products =
{
new Product {Name = "Kayak", Category = "Watersports", Price = 275M},
new Product {Name = "Lifejacket", Category = "Watersports", Price = 48.95M},
new Product {Name = "Soccer ball", Category = "Soccer", Price = 19.50M},
new Product {Name = "Corner flag", Category = "Soccer", Price = 34.95M}
}; var results = products.Sum(e => e.Price); products[] = new Product { Name = "Stadium", Price = 79600M }; return View("Result", (object)String.Format("Sum: {0:c}", results));
}
}
}
Listing 4-32. A Simple Asynchronous Method
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Net.Http;
using System.Threading.Tasks; namespace LanguageFeatures.Models
{
public class MyAsyncMethods
{
public static Task<long?> GetPageLength()
{
HttpClient client = new HttpClient();
var httpTask = client.GetAsync("http://apress.com"); // We could do other things here while we are waiting
// for the HTTP request to complete return httpTask.ContinueWith((Task<HttpResponseMessage> antecedent) => {
return antecedent.Result.Content.Headers.ContentLength;
});
}
}
}
Listing 4-33. Using the async and await Keywords
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Net.Http;
using System.Threading.Tasks; namespace LanguageFeatures.Models
{
public class MyAsyncMethods
{
public async static Task<long?> GetPageLength()
{
HttpClient client = new HttpClient();
var httpMessage = await client.GetAsync("http://apress.com"); // We could do other things here while we are waiting
// for the HTTP request to complete return httpMessage.Content.Headers.ContentLength;
}
}
}
Pro Aspnet MVC 4读书笔记(3) - Essential Language Features的更多相关文章
- Pro Aspnet MVC 4读书笔记(5) - Essential Tools for MVC
Listing 6-1. The Product Model Class using System; using System.Collections.Generic; using System.Li ...
- Pro Aspnet MVC 4读书笔记(1) - Your First MVC Application
Listing 2-1. The default contents of the HomeController class using System; using System.Collections ...
- Pro Aspnet MVC 4读书笔记(4) - Working with Razor
Listing 5-1. Creating a Simple Domain Model Class using System; using System.Collections.Generic; us ...
- Pro Aspnet MVC 4读书笔记(2) - The MVC Pattern
Listing 3-1. The C# Auction Domain Model using System; using System.Collections.Generic; using Syste ...
- 【Tools】Pro Git 一二章读书笔记
记得知乎以前有个问题说:如果用一天的时间学习一门技能,选什么好?里面有个说学会Git是个很不错选择,今天就抽时间感受下Git的魅力吧. Pro Git (Scott Chacon) 读书笔记: ...
- [Git00] Pro Git 一二章读书笔记
记得知乎以前有个问题说:如果用一天的时间学习一门技能,选什么好?里面有个说学会Git是个很不错选择,今天就抽时间感受下Git的魅力吧. Pro Git (Scott Chacon) 读书笔记: ...
- 《Pro Android Graphics》读书笔记之第四节
Android Procedural Animation: : XML, Concepts and Optimization Procedural Animation Concepts: Tweens ...
- 《Pro Android Graphics》读书笔记之第三节
Android Frame Animation: XML, Concepts and Optimization Frame Animation Concepts: Cels, Framerate, a ...
- 《Pro Android Graphics》读书笔记之第六节
Android UI Layouts: Graphics Design Using the ViewGroup Class Android ViewGroup Superclass: A Founda ...
随机推荐
- lua简洁的功能(两)
Lua中的函数带有词法定界的第一类值. 第一类值: 在Lua中,函数和其它值(数值,字符串)一样,函数能够被存放在变量中,也存放在表中, 能够作为函数的參数,还能够作为函数的返回值. 词法定界:被嵌套 ...
- HTML5 Canvas鼠标与键盘事件
演示HTML5 Canvas鼠标事件,获取Canvas对象上的鼠标坐标,演示键盘事件 通过键盘控制Canvas上对象移动. Canvas对象支持所有的JavaScript的鼠标事件,包括鼠标点击(Mo ...
- HDU4960Another OCD Patient(间隙dp,后座DP)
Another OCD Patient Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Ot ...
- easyui LinkButton
http://www.zi-han.net/case/easyui/menu&button.html
- 《实验数据的结构化程序设计》 2.4.4Calendar个人意见,寻求指引
题目大意: 制作一个日历系统,输入年份.一些周年纪念日,及服务要求日期,依据要求日期输出,输出重要程度小于发生日期的周年纪念日. 题目地址: UVA 145 个人见解: 纯模拟,在闰年,输出顺序及输 ...
- HTML学习_01
html总结 html是一门标记语言,也就是不经过编译就能直接执行的语言,不像是c/c++/java等等须要转换成二进制码, html是一门最主要的学科,提供了一个框架,提供了各种标签和规则,使得语言 ...
- 【 D3.js 入门系列 --- 4 】 怎样使用scale(比例)
本人的个人博客为: www.ourd3js.com csdn博客为: blog.csdn.net/lzhlzz 转载请注明出处,谢谢. 在上一节中使用了一个非常重要的概念 - scale (这个不知道 ...
- 【原创】纯OO:从设计到编码写一个FlappyBird (二)
第一部分请点这里. 续结前文,本文将实现Game类. 首先是实例变量.由上次的类图可以看出,Game类首先得具有如下实例变量: 0.Judge judge;1.SimpleDraw draw; // ...
- hive的非交互模式
在linux的终端运行:$HIVE_HOME/bin/hive 会进入交互模式: $HIVE_HOME/bin/hive -e或者-f 是非交互模式 1.非交互模式运行HQL语句 $HIVE_HOM ...
- cocos2d-x于android在call to OpenGL ES API with no current context
一.问题: 正在使用JNI离Java(Android)侧 打回来C++(Cocos2d-x)该函数返回消息.Cocos2d-x花掉了 看看 Eclipse的Log中.显示 有 call to Open ...