Tag: 运算符

‘+ =’的含义

我对C#的语法感到困惑:“+ =”的用法是什么?

System.Nullable null * int值的值是多少?

请考虑以下声明: int? v1 = null; int? v2 = 5 * v1; v2的价值是多少? ( null或空字符串?) 如何防止编译器将其标记为无效操作? 我是否需要遵循自定义exception处理?

为什么按位运算符不像逻辑“和\或”运算符那样智能

我只是注意到按位操作不像逻辑“和\或”操作那样“智能”,我想知道为什么? 这是一个例子: // For the record private bool getTrue(){return true;} private bool getFalse(){return false;} // Since a is true it wont enter getFalse. bool a = getTrue() || getFalse(); // Since a is false it wont enter getTrue. bool b = getFalse() && getTrue(); // Since b is false it wont enter getTrue. b = […]

为什么字符串不能比较引用?

我知道这是特殊情况,但为什么==如果它们的值等于字符串,则返回字符串,而不是当它们的引用等于时。 它是否与重载运算符有关?

如何从reflection中执行显式操作转换?

我想使用reflection,并使用reflection进行隐式或显式转换。 鉴于我已经用这种方式定义了Foo public class Foo { public static explicit operator decimal(Foo foo) { return foo.Value; } public static explicit operator Foo(decimal number) { return new Foo(number); } public Foo() { } public Foo(decimal number) { Value = number; } public decimal Value { get; set; } public override string ToString() { return Value.ToString(); } } […]

为什么x ++ – + – ++ x合法但x +++ – +++ x不合法?

我想知道为什么在C#中以下是好的: int y = x++-+-++x; 但 int y = x+++-+++x; 是不是? 为什么对+有偏见?

^运算符真的是C#中的XOR运算符吗?

我读到^运算符是C#中的逻辑XOR运算符,但我也认为它是“power of”运算符。 解释是什么?

C#LINQ Orderby – true / false如何影响orderby?

我正在研究一些LINQ排序,因为我有一个ID列表,我需要按顺序排序。 但是,某些ID需要优先于标准排序。 鉴于这个C#代码(可以粘贴到.NET Fiddle进行测试),排序按照我需要的方式工作,但我不明白为什么包含的not( ! )运算符给我正确的排序? 我预期的排序输出是( 5, 1, 2, 3, 4, 6, 7, 8, 9 )。 如果我的订单中Contains ,它是否应该为返回true的行赋予优先级? 相反,它似乎为返回false的行提供排序优先级。 using System.Linq; using System; public class Program { public static void Main() { var numbersToFilterBy = new [] {5, 11, 20}; var x = new [] {new XClass(){Id = 1}, new XClass(){Id = 9}, new […]

接线员’??’ 不能应用于’string’和’System.DBNull’类型的操作数

我有以下C#代码: sqlCommand.Parameters.AddWithValue(“@Parameter”, table.Value ?? DBNull.Value); 但它会抛出以下编译错误: 操作员?? 不能应用于string和System.DBNull类型的操作数 为什么编译器不允许这种语法?

我应该重载==运营商吗?

==运算符如何在C#中真正起作用? 如果它用于比较A类的对象,它会尝试匹配所有A的属性,还是会寻找指向同一内存位置的指针(或者其他东西)? 让我们创建一个假设的例子。 我正在编写一个使用Twitter API的应用程序,它有一个Tweet类,它具有单个推文的所有属性:文本,发送者,日期和时间,源等。如果我想比较类Tweet的对象是否等价,我可以使用: Tweet a, b; if (a == b) { //do something… } 那会检查 a和b之间Tweet类的所有属性的等价吗? 如果没有, 那么正确的方法是重载==运算符以明确检查所有字段的等价性吗? 更新:从前两个答案,我是正确的假设: 如果没有为类重载==运算符或Equals方法,则使用对象类的==运算符。 对象类的==运算符检查内存位置是否相等。 我必须重载==运算符或Equals方法来完成此任务。 在重载中,我必须手动检查属性的等价性,所以没有办法半自动地,例如,在循环中 ,对吧? 更新#2: Yuriy发表评论说,可以使用reflection检查==运算符中属性的等价性。 如何才能做到这一点? 你能给我一些示例代码吗? 谢谢!