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在编写switch语句时,在case语句中可以打开的内容似乎存在两个限制.
例如(是的,我知道,如果你正在做这种事情,这可能意味着你的面向对象(OO)架构是不确定的 - 这只是一个人为的例子!),
Type t = typeof(int);
switch (t) {
case typeof(int):
Console.WriteLine("int!");
break;
case typeof(string):
Console.WriteLine("string!");
break;
default:
Console.WriteLine("unknown!");
break;
}
Run Code Online (Sandbox Code Playgroud)
这里switch()语句失败,带有'一个预期的整数类型的值',case语句失败并带有'a expected value is expected'.
为什么会有这些限制,以及基本理由是什么?我看不出有任何理由switch语句具有只能屈从于静态分析,为什么在接通的值必须是完整的(即原语).理由是什么?
我有以下代码行:
var connectionString = configItems.
Find(item => item.Name.ToLowerInvariant() == "connectionstring");
Run Code Online (Sandbox Code Playgroud)
VS 2010代码分析告诉我以下内容:
警告7 CA1308:Microsoft.Globalization:在方法中...用String.ToUpperInvariant()替换对'string.ToLowerInvariant()'的调用.
这意味着ToUpperInvariant()更可靠吗?
C#的switch()语句区分大小写.有没有办法切换它,以便它变得不区分大小写?
==============================
谢谢,但是,我不喜欢这些解决方案;
因为案例条件是一个变量,我不知道它们是否都是UPPER或更低.
有没有办法将下面的if else条件转换为C#中的Switch.我使用Equals方法检查类型,但无法转换为switch case.
if (fi.FieldType.Equals(typeof(int)))
{
fi.SetValue(data, BitConverter.ToInt32(buffer, 0));
}
else if (fi.FieldType.Equals(typeof(bool)))
{
fi.SetValue(data, BitConverter.ToBoolean(buffer, 0));
}
else if (fi.FieldType.Equals(typeof(string)))
{
byte[] tmp = new byte[la.length];
Array.Copy(buffer, tmp, tmp.Length);
fi.SetValue(data, System.Text.Encoding.UTF8.GetString(tmp));
}
else if (fi.FieldType.Equals(typeof(double)))
{
fi.SetValue(data, BitConverter.ToDouble(buffer, 0));
}
else if (fi.FieldType.Equals(typeof(short)))
{
fi.SetValue(data, BitConverter.ToInt16(buffer, 0));
}
Run Code Online (Sandbox Code Playgroud)
请帮助我们....
我有一组 switch-case 语句,例如“你好,你好吗”,“嗨,我能为你做什么?”。如果用户的输入是逐字输入,即:“Hello, how are you”,则匹配有效。
但如果用户输入“Hello, How are You”,则匹配失败。
我希望如果用户的输入相同但大小写不同,那么它应该匹配。IE
"Hello, how are you" == "Hello, How are You" == "HELLO, how are YOU"
Run Code Online (Sandbox Code Playgroud)
如何才能做到这一点?
我是编程新手,
我开始学习C#语言
Console.WriteLine("yes or no ?");
string answer = Console.ReadLine();
switch (answer)
{
case "yes":
// some code
break;
case "no":
//some code
break;
default:
//some code
break;
Run Code Online (Sandbox Code Playgroud)
我的问题是,如果用户插入了他的答案"是","是","是"或者他写"是"的任何方式,程序将执行默认代码,因为它不完全匹配我写的小写"是" switch case ..是否有一种先进的方法让程序检测到"是",大写字母与"是"的答案相同,然后执行大小写为"是"的块代码.
我的第二个问题我选择C#作为我的第一语言,因为Unity3d游戏引擎支持这种语言所以我决定先学习语言,然后在unity3d中使用它是一个正确的决定
我很抱歉,如果我的问题似乎很愚蠢,但正如我说的新手