<meta content="MSHTML 6.00.2900.3199" name="GENERATOR">
<style></style>2007年06月06日 16:34:00
C# 3.0 中对象初始化器(Object Initializers) 和 集合初始化器(Collection Initializers) ,就是简化我们的代码,让本来几行才能写完的代码一行写完。这样在LINQ的使用中,我们才不会把一个LINQ表达式写的巨复杂无比。
由于我看到几篇讲 对象初始化器(Object Initializers)和集合初始化器(Collection Initializers) 的文章,都是一个简单的例子,一些稍稍特殊一点的场景的初始化赋值并没有涉及,所以我特整理这篇博客。
关于对象初始化器(Object Initializers) 的一些问题:
问题一: 对象初始化器允许只给部分值赋值么?即不给其中一些值赋值
答案:允许;参考后面的代码。
问题二:对象初始化器允许给internal 的成员赋值?(私有成员肯定不用想了,肯定不能赋值。)
答案:允许;参考下面的代码。
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
private int test01 = 25;
internal int test02;
}
class Program
{
static void Main(string[] args)
{
Person person = new Person { FirstName = "Scott", LastName = "Guthrie", test02 = 56, };
Console.WriteLine(person.test02);
Console.WriteLine(person.Age);
Console.ReadLine();
}
}
问题三:对象初始化器是否可以结合构造函数一起使用?
答案:可以参看如下代码就可以正常使用:
var cookie3 = new System.Net.Cookie("MyCookie", "Jose") { Comment = "a cookie" };
我们在构造函数中给 Cookie 的名字和值赋了值,在初始化构造器中给 Comment 属性赋了值。
问题四:构造函数赋值和初始化构造器赋值那个最先被执行?
比如下述代码,结果是那个呢??
static void Main(string[] args)
{
var cookie = new System.Net.Cookie("MyCookie", "Jose") { Name = "test02", Comment = "a cookie" };
Console.WriteLine(cookie.Name);
Console.ReadLine();
}
答案:
构造函数比初始化构造器更早被执行。
上述WriteLine 写出来的信息为:test02
集合初始化器(Collection Initializers) 的一些问题:
问题一:集合初始化构造器中是否可以构造集合的一项为空值?
答案:可以,参看下述代码。
问题二:集合初始化构造器是否可以初始化Hashtable ?
答案:可以。这时候相当于用了两个对象初始化构造器,参看下面代码:
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
private int test01 = 25;
internal int test02;
}
class Program
{
static void Main(string[] args)
{
List<person></person>people = new List<person></person>{
new Person { FirstName = "Scott", LastName = "Guthrie", Age = 32 },
new Person { FirstName = "Bill", LastName = "Gates", test02 = 85},
new Person { FirstName = "Susanne", Age = 32 },
null,
};
Hashtable pp = new Hashtable {
{ 1, new Person { FirstName = "Scott", LastName = "Guthrie", Age = 32 } },
{ 2, new Person { FirstName = "Bill", LastName = "Gates", test02 = 85} },
{ 3, new Person { FirstName = "Susanne", Age = 32 } },
{ 4, null },
};
Console.ReadLine();
}
}
参考资料:
Orcas中C#语言的新特性:自动属性,对象初始化器,和集合初始化器
C# 3.0 - Object and Collection Initializers
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1640929
相关推荐
在神经网络训练中,好的权重 初始化会加速训练过程。 下面说一下kernel_initializer 权重初始化的方法。 不同的层可能使用不同的关键字来传递初始化方法,一般来说指定初始化方法的关键字是kernel_initializer 和 ...
灰烬加载初始化器 一个很小的插件,用于在ember-cli中自动加载初始化程序和实例初始化程序文件。 此加载项对app/initializers和app/instance-initializers内部的文件进行迭代,并通过传递文件的解析名称来分别调用...
您已准备好添加初始化程序: // app/assets/javascripts/initializers/rickroll.js( function ( $ ) { function isRickrollable ( ) { return window . user !== 'admin' ; } function rickroll ( ) {
Most notably, of course, it has been updated to cover all the new features of C# 3.0, including object and collection initializers, anonymous types, lambda expressions, query expressions, and partial...
对象与集合初始化器(Object and Collection Initializers) 扩展方法(Extension Methods) Lambda表达式和Lambda表达式树 (Lambda Expression and Lambda Expression Trees) LINQ,语言级集成查询(Language ...
C# 3.0 Unleashed 1 Table of Contents 6 Introduction 30 Why This Book Is for You 31 Organization and Goals 32 Part 1 Learning C# Basics 36 1 Introducing the .NET Platform 38 What Is .NET? 38 The...
LINQ, Object/Collection Initializers OOP: Classes, Objects, Inheritance, Polymorphism, Interfaces WinForms, WPF, XAML, Event Handling WPF GUI/Graphics/Multimedia Silverlight® Lists, Queues, ...
Effective C# (Covers C# 4.0): 50 Specific Ways to Improve Your C#, Second Edition 352 pages Publisher: Addison-Wesley Professional; 2 edition (March 15, 2010) Language: English ISBN-10: 0321658701...
Kubernetes Initializers工作原理介绍.pptx
文件夹/initializers下的初始化代码 每个环境的配置 自动加载文件夹/models和/controllers下的/models和/controllers routes.js文件中的路由配置。 每个环境的日志记录 (还有更多) 该框架允许将代码放置在已知...
1) async / await 使用 async / await 模式,可以在执行代码块操作的时候不会阻塞 UI ...通过使用对象、数组、集合的初始值设定项,可以很容易地创建类、数组和集合的实例: // 示例类 public class Employee { publi
微软于2015年7月21日发布了Visual Studio 2015, .NET 2015, .NET Framework 4.6, ASP.NET 4.6, Azure SDK 2.7 for .NET, C# 6.0, F# 4.0, TypeScript 1.5, ...1.自动属性初始化(Auto-property initializers) 代码如下:
在Rails中,在config/initializers/hypernova.rb创建一个初始化config/initializers/hypernova.rb 。 # Really basic configuration only consists of the host and the port Hypernova . configure do | config | ...
回归器 ... 这将在config / initializers中创建一个初始化器。 这个初始化程序看起来像这样: 初始化器 # If the regressor gem is inside a group wrap your initializer in # if defined?(Regressor) d
微软内部提供的详细描述C#语言结构和使用的文档,想做高级独立资深开发的不可错误,另外,此文档为英文原文版。建议作为平时学习阅读之用 目录: Table of Contents 1. Introduction 1 1.1 Hello world 1 1.2 ...
Gemfile 后,您需要运行生成器: $ rails generate sell_object:install这会将 SellObject 初始值设定项添加到您的 Rails config/initializers 文件夹中。用法设置班级假设您有一个Product类并希望
1) async / await 使用 async / await 模式,可以在执行代码块操作的时候不会阻塞 UI 或者当前的线程。... 通过使用对象、数组、集合的初始值设定项,可以很容易地创建类、数组和集合的实例: /
生成器将复制迁移,并在config/initializers/feedy.rb创建一个初始化config/initializers/feedy.rb ,并将引擎挂载到您的config/routes.rb文件中。 运行迁移: rake db:migrate 现在,将 CSS 和 JavaScript 资产...
重装Ruby Ruby中用于数组,哈希,可枚举,字符串,对象和日期的有用方法和猴子补丁的集合。 通过使生活更轻松和编码更自然而受到驱动。 该库与其他库之间的区别在于,所有猴子修补均以选择加入的方式执行,因为您不...