Tag: 运营商

C#:是具有inheritance的generics类型的运算符

我有一个运算符比较generics类型的问题。 public interface ISomeInterface where T : SomeBaseClass{ } public class SomeClass : SomeBaseClass{ } 现在我们想用is运算符检查类型。 我们有一个实现接口ISomeInterface的类的实例。 不幸的是,我们面临以下问题: // someObject is an Instance of a class implementing interface ISomeInterface bool isSomeBaseClass = someObject is ISomeInterface; // false bool isSomeClass = someObject is ISomeInterface; // true 是否可以检查变量generics类型? 托比,提前谢谢

‘%’运算符是什么意思?

我有下一个代码 int a,b,c; b=1; c=36; a=b%c; “%”运算符是什么意思?

为什么Postfix ++ / – 在C#中被归类为主要操作符?

目前我正在教授一类C ++程序员C#语言的基础知识。 当我们讨论主题运算符时,我使用C#标准类别的主要,一元等操作符。 其中一位与会者感到困惑,因为在C#标准中,“postfix ++ / – ”已经被置于主要运营商的类别而不是“前缀++ / – ”。 她混淆的理由是,她宁愿用运算符“prefix ++ / – ”来实现C ++运算符“postfix ++ / – ”。 换句话说,她宁愿将运算符“prefix ++ / – ”视为主要运算符。 – 我理解她的观点,但我不能给她一个理由。 好吧,运营商“postfix ++ / – ”的优先级高于“前缀++ / – ”,但这背后的唯一理由是什么? 规范在“14.2.1运算符优先级和关联性”一节中提到了它。 所以我非常中立的问题:为什么Postfix ++ / – 在C#中被归类为主要操作符? 它有更深层次的真相吗?

“?”类型修改器优先级与逻辑和运算符(&)与地址 – 运算符(&)

更新:似乎我不清楚我究竟要问的是什么(随着时间的推移,我也失去了一些问题),所以这里是一个tl; dr版本: var test1 = a is byte & b; // compiles var test2 = a is byte? & b; // does not compile var test3 = a is byte? && b; // compiles 这意味着 – 据我所知 – 那个? 类型修饰符具有较低的优先级 (因为它不是运算符,这可能不是最好的单词)而不是&运算符,但高于&&运算符。 是这样吗? 标准中描述了哪里? 原来的问题是: 在试图从Jon Skeet的优秀博客文章“两个谜题的故事”中找出第二个谜题的答案时,我遇到了一个问题: unsafe private void Test(T a, bool b) { var […]

C#:枚举中的按位运算符(MVC中的自定义授权)

我正在阅读一篇文章 ,但我真的不明白这是如何与逻辑运算符一起工作的。 任何人都可以向我解释这个吗? 例如。 如果我想与客户,员工,主管和管理员有4级证券。 [Serializable] [Flags] public enum WebRoles { customer= 1 << 0, employee= 1 << 1, supervisor = 1 << 2, Admin = 2 << 3 } 然后我应该如何实现以下逻辑。 if (Roles != 0 && ((Roles & role) != role)) return false; 有人能为我提供一些这方面的知识吗? 非常感谢你。 道明

‘=>’在C#中做了什么?

可能重复: Lamda说明它是什么以及它是一个很好的例子 什么是=>令牌? 我看过这段代码: myContext.SomeEntities.Single(x => x.code == code); 我不知道=>运算符做了什么。 谷歌关于运营商的每次搜索都不会返回任何结果。 谢谢。

如果左操作数到?? operator不为null,是否对右操作数进行求值?

我正在寻找使用?? C#中的operator(null-coalescing operator)。 但是MSDN上的文档是有限的。 我的问题:如果左侧操作数不为null,右手操作数是否会被评估?

使用三元运算符进行多个运算

我该如何使用三元? : ? :如果表达式为true / false,则执行多个操作的条件? wbsource = (exp) ? (Do one thing) : (Do second thing) wbsource = (exp) ? (Do one thing) : (Do second thing) wbsource = (exp) ? (Do one thing) (Do second thing) : (Do second thing) wbsource = (exp) ? (Do one thing) (Do second thing) : (Do second […]

VB.net中没有增量运算符

我是vb.net的新手并且在将C#中的for循环转换为VB.net时遇到了这个问题我意识到增量运算符在vb.net(++和 – )中不可用,而我能够做到比如cnt +=1 我研究了一下,并发现了同样的埃里克的post ,但真的不能完全理解它。 他提到在VB中,STATEMENT不能仅仅是一种表达。 不确定这是如何真正适合的。 我希望这里的某个人能够解释为什么这不像C#中那样有效。 (希望这也是正确的,因为为什么我们在C#中有==用于比较)

没有强制转换的两个字节变量的C#XOR将无法编译

为什么以下引发编译时错误:’无法将类型’int’隐式转换为’byte’: byte a = 25; byte b = 60; byte c = a ^ b; 如果我使用算术运算符,这将是有意义的,因为a + b的结果可能大于可以存储在单个字节中的结果。 然而,将其应用于XOR运算符毫无意义。 这里是一个按位操作,它永远不会溢出一个字节。 在两个操作数周围使用一个转换器: byte c = (byte)(a ^ b);