【有条件地分配C#var:它是否优雅?】教程文章相关的互联网学习教程文章

c# – 为什么var returnText = value as string not working?【代码】

我有一个实现IValueConverter的Convert方法.我的第一个陈述是var returnText = value as string不能将值作为字符串接管.但是,它不起作用,当我调试时,我发现“value”变量的值没有分配给returnText,所以returnText总是为null.这很奇怪.有人知道为什么吗?public object Convert(object value, Type targetType, object parameter, CultureInfo culture){var returnText = value as string;if (!string.IsNullOrEmpty(returnText)){....

C#中var关键字

var 是.NET 3.5版本新出的一个定义变量的类型,其实就是一个弱化类型的定义,var可以 代替任何类型,编辑器会根据上下文来判断使用者具体想用什么类型, 当你无法确定自己将使用什么类型的时,就可以使用var,var类似object,但是效率化比object高点。使用var 定义变量时一般有以下四个特点: 1、必须在定义时初始化。必须是var a=“abc”的形式,不能是var a; a=“abc”的形式; 2、初始化完成后,就不能再给变量赋与初始化类型不...

c# – 为什么在foreach for XmlNode中使用的var不推导出实际类型,只推导出对象?【代码】

让cls为XmlNode类型 以下语句允许我访问子节点:foreach (XmlNode child in cls.ChildNodes)现在当我尝试使用var:foreach (var child in cls.ChildNodes)那么子类型不是XmlNode,只是对象.我不能使用child.NodeType,编译器说:object’ does not contain a definition for ‘NodeType为什么是这样?解决方法:ChildNodes的类型为XmlNodeList,定义为public abstract class XmlNodeList : IEnumerable, IDisposable它的枚举器返回一个...

c# – out var _和out _ difference?【代码】

参见英文答案 > C#7: Underscore ( _ ) & Star ( * ) in Out variable 4个在C#7中,我们可以这样做:byte.TryParse(p.Value, out _)或者像这样byte.TryParse(p.Value, out var _)有什么不同吗?解决方法:与其他人在评论中所说的相反:不,没有差异.它们都产生完全相同的IL. 都byte.TryParse(p.Value, out _); Console.WriteLine(_);和byte.TryParse(p.Value, out var _); Console.WriteLine(_);将...

有条件地分配C#var:它是否优雅?【代码】

我理解C#关键字var在编译时隐含类型,因此需要在同一位置声明和赋值,使以下构造非法:var something;if (condition) {something=1; } else {something = 0; }尽管C#编译器可以主要确定当前作用域中的所有赋值都是相同的类型,但它(当前)却没有,因此会生成编译时错误. 在将LIN与LINQ一起使用时,我有时希望根据程序条件略微不同地初始化我的结果变量.我发现的方法是使用?:运算符,如:var participants = (email == null ?(from part ...

c# – Resharper Policy – 如何有条件地推荐var?

我想为Resharper创建一个自定义策略,以便在’new’关键字后面的’=’右侧指定实际类型时建议’var’,并禁用建议使用’var’否则. 这可能吗?如果是这样,怎么样? 谢谢.解决方法:您不需要自定义规则,ReSharper 9中已有一个选项.我无法确认它是否适用于以前的版本. 你可以通过转到ReSharper选项卡,选择Options …找到它,然后在弹出窗口中转到Code Editing,C#,最后转到Code Style. 在明显的情况下,将第一部分的选项从使用’var’更改为...

c# – 是否总是执行using var?【代码】

在我维护的一些代码中,我遇到了这个:int Flag; using (StreamReader reader = new StreamReader(FileName, Encoding.GetEncoding("iso-8859-1"), true)) {Flag = 1;// Some computing code }if(Flag == 1) {// Some other code }根据我的理解,如果执行使用部分,这是一种做其他指令的方法.但是否有可能使用不执行(除非引发异常)?或者这是完全没用的代码?解决方法:那段代码没用…… 如果你添加一个try … catch它可能有意义……你...

c# – “var”关键字是否会妨碍代码可读性?【代码】

我刚开始使用Resharper.它的一个特点是,它建议基于我认为良好的编码实践来改变代码. 它建议的一个变化是在赋值期间将变量类型更改为var.我一直在改变,现在代码到处都是var.不知何故,我感觉“var”关键字使代码有点难以理解. 在可能的情况下使用“var”是否是一个很好的编码实践,或者更好地坚持实际类型. (除了需要使用“var”的匿名类型) 谢谢.最佳答案:C# programming guide建议在增强可读性时使用var,例如当类型明显,太复杂或根本...

C#中的Var类型

传统定义变量是已经知道变量的类型,如: int a = 1; string b = “qwer”; 用Var类型预先不用知道变量的类型;根据你给变量赋值来判定变量属于什么类型;如 var a =1; 则a是整型,var a = “qwer”;则a是字符型,但使用Var类型要注意: 1:必须在定义时初始化,即不能先定义后初始化,如:var a;a = 1;这样是不允许的 2:一旦初始化完成,不能再给变量赋与初始化不同的变量 3:var类型的变量必须是局部变量