草庐IT

c# - 投然后检查还是检查然后投?

这个问题在这里已经有了答案:关闭9年前。PossibleDuplicate:Castingvsusingthe‘as’keywordintheCLR哪种方法被认为是最佳实践?先投?publicstringDescribe(IColacola){varcoke=colaasCocaCola;if(coke!=null){stringresult;//someuniquecoca-colaonlycodehere.returnresult;}varpepsi=colaasPepsi;if(pepsi!=null){stringresult;//someuniquepepsionlycode

c# - 将泛型方法中的 T 参数转换为 DateTime

我有以下(简化的)方法:privatestaticstringGetStringFromValue(Tval){if(typeof(T)==typeof(DateTime)){returnstring.Format("{0}",((DateTime)val).Year.ToString("0000"));}returnstring.Empty;}在强制转换“(DateTime)val”时出现以下错误:CannotcastexpressionofType'T'totype'DateTime'如何访问DateTime参数的Year属性?更新:感谢您所有快速的答复。这个方法(和方法名称)真的

C# 内联检查语句不起作用

我有两种测试方法。第一个工作正常。第二个不会抛出异常,但它应该抛出异常。为什么第二个不抛出异常?[TestMethod][ExpectedException(typeof(OverflowException))]publicvoidLongToInt_OverflowWithCheckedBlock(){checked{intmaxValue=2147483647;longlongValue=(maxValue+1);intintValue=(int)longValue;}}[TestMethod][ExpectedException(typeof(OverflowException)

c# - 检查控件类型

我能够获取页面所有控件的ID以及它们的类型,当我打印它时在页面中显示myPhoneExtTxtType:System.Web.UI.HtmlControls.HtmlInputText这是根据这段代码生成的foreach(Controlcinpage){if(c.ID!=null){controlList.Add(c.ID+"Type:"+c.GetType());}}但现在我需要检查它的类型并访问其中的文本(如果它是HtmlInput类型),但我不太确定该怎么做。喜欢if(c.GetType()==(somehtmlInput)){somehtmlInput.Text="Thissh

c# - 如何在 .net 中将 long 转换为 int?

我正在silverlight中开发windowphone7应用程序。我是windowphone7应用程序的新手。我有如下字符串格式的长值StringAm=AmountTextBox.Text.ToString()上面代码中的AmountTextBox.Text.ToString()是一个字符串格式的长值。我想在我的应用程序中存储一个15位数的内部值。我找到了以下链接进行转换。CanIconvertlongtoint?如何将字符串格式的long值转换为int?您能否提供我可以解决上述问题的任何代码或链接?如果我做错了什么,请指导我。 最佳答案

c# - 如何在一行 C# 3.0 中将 object[] 转换为 List<string>?

好吧,我放弃了,你如何在一行中做到这一点?publicobjectConvert(object[]values,TypetargetType,objectparameter,System.Globalization.CultureInfoculture){//Listfields=values.ToList();//Listfields=valuesasList;//Listfields=(List)values;Listfields=newList();foreach(objectvalueinvalues){fields.Add(value.ToString());}//proce

c# - 当右侧操作数是泛型时, "as"运算符如何翻译?

我刚刚发布了一个answer至thisquestion但我并不完全相信我的回答。有两件事我想知道,请考虑这段代码:classFoo{voidSomeMethod(){stringstr="foo";Foof=strasFoo;}}根据C#Specification5.0,asoperator有两种不同的转换方式.Ifthecompile-timetypeofEisnotdynamic,theoperationEasTproducesthesameresultasEisT?(T)(E):(T)nullIfthecompile-timetypeofEisdynamic,unlikethec

c# - 编译时和运行时转换 c#

我想知道为什么在编译时检查C#中的某些强制转换,而在其他情况下,责任被推给了CLR。像上面一样,两者都是不正确的,但处理方式不同。classBase{}classDerived:Base{}classOther{}staticvoidMain(string[]args){Derivedd=(Derived)newBase();//RuntimeInvalidCastExceptionDerivedd=(Derived)newOther();//Compile-timeCannotconverttype...}在阅读“深入了解C#”时,我找到了有关此主题的信息,其中作者说:“如果编译器发

c# - 如何将 LambdaExpression 转换为类型化的 Expression<Func<T, T>>

我正在为nHibernate动态构建linq查询。由于依赖关系,我想稍后再转换/检索类型化的表达式,但到目前为止我一直没有成功。这是行不通的(强制转换应该发生在其他地方):varfuncType=typeof(Func).MakeGenericType(entityType,typeof(bool));vartypedExpression=(Func)Expression.Lambda(funcType,itemPredicate,parameter);//Fails这是有效的:vartypedExpression=Expression.Lambda>(itemPredicate,pa

c# - 为什么要在转换中使用 Convert.ToInt32?

这个问题在这里已经有了答案:WhentouseaCastorConvert(9个回答)关闭9年前。今天工作中突然出现一个问题,关于如何将一个对象转换成它的特定类型(一个int),我说要转换它:inti=(int)object;一位同事说要使用Convert.ToInt32()。inti=Convert.ToInt32(object)Convert.ToInt32()和直接对象转换有什么区别?