where T : struct
Run Code Online (Sandbox Code Playgroud)
我们C#开发人员都知道C#的基础知识.我的意思是声明,条件,循环,运算符等.
我们中的一些人甚至掌握了Generics,匿名类型,lambdas,LINQ等......
但是C#粉丝,瘾君子,专家几乎都不知道C#最隐藏的功能或技巧是什么?
yield由迈克尔·葡萄汁var由迈克尔·葡萄汁using()kokos的声明readonly由kokosas由迈克·斯通as/ is由埃德Swangrenas/ is(改进)由Rocketpantsdefault由deathofratsglobal::通过pzycomanusing()由块AlexCusevolatile作者:JakubŠturcextern alias作者:JakubŠturc对于任何给定的类型,我想知道它的默认值.
在C#中,有一个名为default的关键字,就像这样做
object obj = default(Decimal);
Run Code Online (Sandbox Code Playgroud)
但我有一个Type(称为myType)的实例,如果我这样说,
object obj = default(myType);
Run Code Online (Sandbox Code Playgroud)
它不起作用
这样做有什么好办法吗?我知道一个巨大的开关块可以工作,但这不是一个好的选择.
当此方法返回时,[value参数]包含与指定键关联的值(如果找到键); 否则,value参数类型的默认值.此参数未初始化传递.
我需要在课堂上模仿这个.如何找到T型的默认值?
如何修改此问题以使其显示在搜索中?
我有一个包含一堆可以多次出现的字符串的List.我想获取此列表并构建列表项的字典作为键和它们的出现次数作为值.
例:
List<string> stuff = new List<string>();
stuff.Add( "Peanut Butter" );
stuff.Add( "Jam" );
stuff.Add( "Food" );
stuff.Add( "Snacks" );
stuff.Add( "Philosophy" );
stuff.Add( "Peanut Butter" );
stuff.Add( "Jam" );
stuff.Add( "Food" );
Run Code Online (Sandbox Code Playgroud)
结果将是包含以下内容的字典:
"Peanut Butter", 2
"Jam", 2
"Food", 2
"Snacks", 1
"Philosophy", 1
Run Code Online (Sandbox Code Playgroud)
我有办法做到这一点,但似乎我没有利用C#3.0中的好东西
public Dictionary<string, int> CountStuff( IList<string> stuffList )
{
Dictionary<string, int> stuffCount = new Dictionary<string, int>();
foreach (string stuff in stuffList) {
//initialize or increment the count for this item
if (stuffCount.ContainsKey( stuff )) { …Run Code Online (Sandbox Code Playgroud) 我知道"default"关键字返回静态确定类型的默认值,如本问题中所示.
但是,给定一个类型的实例,是否有一种简单的方法来动态获取此类型的默认值?我发现谷歌搜索,而唯一的办法是这样:
static object DefaultValue(Type myType)
{
if (!myType.IsValueType)
return null;
else
return Activator.CreateInstance(myType);
}
Run Code Online (Sandbox Code Playgroud)
但是如果可能的话我想避免使用Activator类.