草庐IT

compound-assignment

全部标签

c# - 在 C# 构造函数中初始化什么更好 : initializer lists or assignment?

A类使用初始化列表将成员设置为参数值,而B类使用构造函数体内的赋值。只要我始终如一,任何人都可以给出更喜欢其中一个的理由吗?classA{String_filename;A(Stringfilename):_filename(filename){}}classB{String_filename;B(Stringfilename){_filename=filename;}} 最佳答案 第一个在C#中是不合法的。构造函数中冒号后唯一可以出现的两项是base和this。所以我会选择第二个。 关

c# - 在 C# 构造函数中初始化什么更好 : initializer lists or assignment?

A类使用初始化列表将成员设置为参数值,而B类使用构造函数体内的赋值。只要我始终如一,任何人都可以给出更喜欢其中一个的理由吗?classA{String_filename;A(Stringfilename):_filename(filename){}}classB{String_filename;B(Stringfilename){_filename=filename;}} 最佳答案 第一个在C#中是不合法的。构造函数中冒号后唯一可以出现的两项是base和this。所以我会选择第二个。 关

c# - 为什么 C# 中没有 ||= 或 &&= 运算符?

我们为所有逻辑运算符、移位运算符、加法运算符和所有乘法运算符提供等效的赋值运算符。为什么逻辑运算符被排除在外?是否有充分的技术原因说明它很难? 最佳答案 Whydidthelogicaloperatorsgetleftout?Isthereagoodtechnicalreasonwhyitishard?他们没有。如果需要,您可以执行&=或|=或^=。boolb1=false;boolb2=true;b1|=b2;//meansb1=b1|b2||和&&运算符没有复合形式,因为坦率地说,它们有点傻。在什么情况下你会想说b1||=b2;

c# - 为什么 C# 中没有 ||= 或 &&= 运算符?

我们为所有逻辑运算符、移位运算符、加法运算符和所有乘法运算符提供等效的赋值运算符。为什么逻辑运算符被排除在外?是否有充分的技术原因说明它很难? 最佳答案 Whydidthelogicaloperatorsgetleftout?Isthereagoodtechnicalreasonwhyitishard?他们没有。如果需要,您可以执行&=或|=或^=。boolb1=false;boolb2=true;b1|=b2;//meansb1=b1|b2||和&&运算符没有复合形式,因为坦率地说,它们有点傻。在什么情况下你会想说b1||=b2;

c# - "k += c += k += c;"中是否有内联运算符的解释?

下面操作结果的解释是什么?k+=c+=k+=c;我试图理解以下代码的输出结果:intk=10;intc=30;k+=c+=k+=c;//k=80insteadof110//c=70目前我正在努力理解为什么“k”的结果是80。为什么分配k=40不起作用(实际上VisualStudio告诉我该值没有在其他地方使用)?为什么k是80而不是110?如果我将操作拆分为:k+=c;c+=k;k+=c;结果是k=110。我试图浏览CIL,但我对生成的CIL的解释不是很深刻,无法获得一些细节://[1113-1124]IL_0001:ldc.i4.s10IL_0003:stloc.0//k//[121

c# - "k += c += k += c;"中是否有内联运算符的解释?

下面操作结果的解释是什么?k+=c+=k+=c;我试图理解以下代码的输出结果:intk=10;intc=30;k+=c+=k+=c;//k=80insteadof110//c=70目前我正在努力理解为什么“k”的结果是80。为什么分配k=40不起作用(实际上VisualStudio告诉我该值没有在其他地方使用)?为什么k是80而不是110?如果我将操作拆分为:k+=c;c+=k;k+=c;结果是k=110。我试图浏览CIL,但我对生成的CIL的解释不是很深刻,无法获得一些细节://[1113-1124]IL_0001:ldc.i4.s10IL_0003:stloc.0//k//[121

c# - 结构构造函数 : "fields must be fully assigned before control is returned to the caller."

这是我正在尝试编写的结构:publicstructAttackTraits{publicAttackTraits(doubleprobability,intdamage,floatdistance){Probability=probability;Distance=distance;Damage=damage;}privatedoubleprobability;publicdoubleProbability{get{returnprobability;}set{if(value>1||value这会导致以下编译错误:The'this'objectcannotbeusedbeforeal

c# - 结构构造函数 : "fields must be fully assigned before control is returned to the caller."

这是我正在尝试编写的结构:publicstructAttackTraits{publicAttackTraits(doubleprobability,intdamage,floatdistance){Probability=probability;Distance=distance;Damage=damage;}privatedoubleprobability;publicdoubleProbability{get{returnprobability;}set{if(value>1||value这会导致以下编译错误:The'this'objectcannotbeusedbeforeal

c# - 在 C# 中抑制 "is never used"和 "is never assigned to"警告

我在C#项目中有一个HTTPSystemDefinitions.cs文件,它基本上描述了托管代码使用的旧WindowsISAPI。这包括与ISAPI相关的完整结构集,但并非全部或由代码使用。在编译时,这些结构的所有字段成员都会引发如下警告:-WarningField'UnionSquare.ISAPI.HTTP_FILTER_PREPROC_HEADERS.SetHeader'isneverassignedto,andwillalwayshaveitsdefaultvaluenull或WarningThefield'UnionSquare.ISAPI.HTTP_FILTER_PREPR

c# - 在 C# 中抑制 "is never used"和 "is never assigned to"警告

我在C#项目中有一个HTTPSystemDefinitions.cs文件,它基本上描述了托管代码使用的旧WindowsISAPI。这包括与ISAPI相关的完整结构集,但并非全部或由代码使用。在编译时,这些结构的所有字段成员都会引发如下警告:-WarningField'UnionSquare.ISAPI.HTTP_FILTER_PREPROC_HEADERS.SetHeader'isneverassignedto,andwillalwayshaveitsdefaultvaluenull或WarningThefield'UnionSquare.ISAPI.HTTP_FILTER_PREPR