欧博注册:[C#.NET 拾遗补漏]03:你可能不知道的几种工具初始化方式

admin 1个月前 (09-25) 科技 45 1
阅读本文也许需要 1.2 分钟。

随着 C# 的升级,C# 在语法上对工具的初始化做了不少简化,来看看有没有你不知道的。

数组的初始化

上一篇枚举数组的小知识的时刻,其中也提到了数组的初始化,这时直接引用过来。

int[] arr = new int[3] {1, 2, 3}; // 正儿八经的初始化
int[] arr = new [] {1, 2, 3}; // 简化掉了 int 和数组容量声明
int[] arr = {1, 2, 3}; // 最终简化

字典的两种初始化方式

第二种是 C# 6 的语法,可能很多人不知道。

// 方式一:
VAR dict = new Dictionary<string, int>
{
{ "key1", 1 },
{ "key2", 20 }
};

// 方式二:
var dict = new Dictionary<string, int>
{
["key1"] = 1,
["key2"] = 20
};

含自定义索引器的工具初始化

这种初始化原理上其实是和上面字典的第二种初始化是一样的。

public CLass IndexableClass
{
public int this[int index]
{
set
{
CoNSole.WriteLine("{0} was assIGned to index {1}", value, index);
}
}
}

var foo = new IndexableClass
{
[0] = 10,
[1] = 20
}

元组(Tuple)的三种初始化方式

前面两种方式很常见,后面一种是 C# 7 的语法,可能有些人不知道。

// 方式一:
var tuple = new Tuple<string, int, MyClass>("foo", 123, new MyClass());

// 方式二:
var tuple = Tuple.Create("foo", 123, new MyClass());

// 方式三:
var tuple = ("foo", 123, new MyClass());

另外弥补个小知识,在 C# 7 中,元组的元素可以被解构命名:

(int number, bool flage) tuple = (123, true);
Console.WriteLine(tuple.number); // 123
Console.WriteLine(tuple.flag); // True

自定义聚集类的初始化

只要自定义聚集类包罗Add方式,便可以使用下面这种初始化方式为聚集初始化元素。

class Program
{
static void MAIn()
{
var collection = new MyCollection {
"foo", // 对应方式:Add(string item)
{ "bar", 3 }, // 对应方式:Add(string item, int count)
"baz", // 对应方式:Add(string item)
123.45d, // 对应扩展方式:Add(this MyCollection @this, double value)
};
}
}

class MyCollection : IEnumerable
{
privatereadonly IList _list = new ArrayList();

public void Add(string item)
{
_list.Add(item);
}

public void Add(string item, int count)
{
for (int i = 0; i < count; i++)
{
_list.Add(item);
}
}

public IEnumerator GetEnumerator()
{
return _list.GetEnumerator();
}
}

static class MyCollectionExtensions
{
public static void Add(this MyCollection @this, double value) =>
@this.Add(value.ToString());
}

工具的聚集属性初始化

我们知道对聚集的初始化必须使用new建立该聚集,不能省略,好比:

// OK
IList<string> synonyms = new List<string> { "c#", "c-sharp" };

// 编译报错,不能省略 new List<string>
IList<string> synonyms = { "c#", "c-sharp" };

但若是该聚集作为另外一个类的属性,则可以省略new,好比:

public class Tag
{
public IList<string> Synonyms { get; set; }
}

var tag = new Tag
{
Synonyms = { "c#", "c-sharp" } // OK
};

能想到和找到的就这么点了,希望以上会对你的编程有所辅助。

,

欧博网址

www.ludiealliedinstitute.com欢迎进入欧博网址(Allbet GaMing),欧博网址开放会员注册、代理开户、电脑客户端下载、苹果安卓下载等业务。

皇冠APP声明:该文看法仅代表作者自己,与本平台无关。转载请注明:欧博注册:[C#.NET 拾遗补漏]03:你可能不知道的几种工具初始化方式

网友评论

  • (*)

最新评论

  • www.allbetgaming.net 2020-09-25 00:12:34 回复

    Us apple developer accounts for saleAppledeveloper.io is a reputed website selling apple developer account, providing us, China and worldwide developer individual accounts for sale. It's at low price and good quality. Always provides satisfying services!每天晚上必看

    1

文章归档

站点信息

  • 文章总数:734
  • 页面总数:0
  • 分类总数:8
  • 标签总数:1068
  • 评论总数:403
  • 浏览总数:23259