草庐IT

符号运算

全部标签

c# - 为什么我必须定义一个交换运算符两次?

我想知道我是否必须定义一个交换运算符(如*)两次!publicstaticMyClassoperator*(inti,MyClassm){returnnewMyClass(i*m.Value);}publicstaticMyClassoperator*(MyClassm,inti){returnnewMyClass(m.Value*i);}这背后的逻辑是什么?附加说明:亲爱的@Marc关于向量和矩阵乘法的回答很好当且仅当我们假设操作数类型不同时!!!很明显,我们只能定义一次*运算符来执行向量或矩阵乘法。所以我认为这不是答案。@Marc:Orderissometimesimportant

c# - Winforms/WPF 应用程序支持彩色表情符号吗?

我想构建一个支持Windows8.1彩色表情符号的Windows应用程序。我似乎无法在任何地方找到实际说明的内容,但似乎确实如此,除非您正在构建“WindowsStore”应用程序,否则这是不可能的,这当然需要付费的开发人员许可证。天哪,又是iOS开发!那么无论如何,有没有一种方法可以在WinForms或WPF中进行开发,从而在Windows8.1上运行时允许使用彩色表情符号? 最佳答案 从.NET4.6.1开始,您无法开箱即用。彩色表情符号在WPF中不起作用。它们在XAML通用Windows应用程序上执行,但特别是在WPF上它们不

c# - EF - 无法将运算符 '==' 应用于类型为 'TId' 和 'TId' 的操作数

我有这个通用类,它使用EntityFramework6.x。publicclassGenericRepositorywhereTEntity,class,IIdentifyable{publicvirtualTEntityGetById(TIdid){using(varcontext=newDbContext()){vardbSet=context.Set();varcurrentItem=dbSet.FirstOrDefault(x=>x.Id==id);returncurrentItem;}}publicvirtualboolExists(TIdid){using(varconte

c# - 使用常量进行算术运算时出现溢出错误

我尝试了以下代码:intx,y;x=y=int.MaxValue;intresult=x+y;此代码工作正常,结果将包含-2(我知道为什么)。但是这样做的时候:constintx=int.MaxValue;constinty=int.MaxValue;intresult=x+y;由于溢出问题,这将无法编译。为什么? 最佳答案 因为x和y都是编译时常量,所以x+y也是。编译器知道结果会溢出,所以它会提示。您可以使用unchecked表达式来解决这个问题:intresult=unchecked(x+y);来自C#5规范的第7.6.12节

c# - 为什么当操作数小于 32 位时,移位操作总是产生有符号整数

为什么对无符号整数的移位运算会得到一个无符号的结果,而对更小的无符号操作数的运算会得到一个有符号的整数?intsignedInt=1;intshiftedSignedInt=signedInt 最佳答案 shiftoperators仅为这些情况预定义(左移):intoperator表达式uintshiftedUnsignedShort=unsignedShort被解释为(1)-st情况(implicitup-castingfromushorttoint和(int)2),因此它对非法转换发出警告(没有从int结果到ushort的隐式转

c# - 我可以/应该使用隐式运算符而不是覆盖 ToString 吗?

我有一个类,我想轻松地写出字符串(例如,用于记录目的)。我可以使用隐式运算符将对象隐式转换为字符串而不是重写ToString方法吗?例如,我有一个包含姓名和年龄的Person类:publicclassPerson{publicstringName{get;set;}publicintAge{get;set;}}我可以覆盖ToString:publicoverridestringToString(){returnString.Format("Name:{0},Age:{1}",this.Name,this.Age);}或者我可以使用隐式运算符:publicstaticimplicitop

c# - 检测*所有*表情符号

现在我正在使用这段代码:publicstaticboolContainsEmoji(thisstringtext){Regexrgx=newRegex(@"\p{Cs}");returnrgx.IsMatch(text);}这有点帮助。它们中的大多数似乎都被检测到了,但也有一些未被检测到。这是一个可以提供帮助的引用列表:http://unicode.org/emoji/charts/full-emoji-list.html所有的笑脸看起来都很好,但这些特定的表情符号不会被正则表达式捕捉到:1920U+2614☔雨滴雨伞1921U+26F1⛱落地伞1922U+26A1⚡高压1923U+2

c# - 如果没有可空 DateTime 的隐式运算符,为什么 C# 隐式转换为可空 DateTime?

这是一个关于C#语言或至少该语言在VisualStudio中是如何实现的问题。假设有一个Foo类,它为System.DateTime定义了一个隐式运算符publicstaticimplicitoperatorDateTime(Fooitem)考虑以下代码:Foofoo=SomeMethodWhichCanReturnNull();DateTime?dtFoo=foo;我的期望:编译失败提示没有从Foo到DateTime?的转换。我的发现:编译器实际上调用了从Foo到DateTime的已定义隐式运算符,并在传递null(它是转换器可以响应null的唯一方式)。当然,work-around

c# - 如何在 CompilationUnit 中找到方法符号的 SyntaxNode?

我在一个编译单元中添加了一堆节点,现在我想查找给定符号对应的语法节点:varcompilation=Compilation.Create("HelloWorld").AddSyntaxTrees(SyntaxTree.ParseCompilationUnit(""));ISymbolsymbol=//somearbitrarysymbol,e.g.amethodwhosesyntaxnodeIhadcompilation.GlobalNamespace.GetNamespaceMembers().First();SyntaxTokentoken=???;//howdoIgettheto

c# - "do"/Action LINQ 运算符有什么计划吗?

这是一个带有foreach循环的简单方法:IEnumerableFieldsToXElements(objectinstance){varfieldElements=newList();foreach(varfieldininstance.GetType().GetFields(instance)){fieldElements.Add(newXElement(field.Name,field.GetValue(instance)));}returnfieldElements;}有点丑。如果LINQ中有一些运算符表示“做某事”(例如,为LINQ语句中的每个选定项执行Action),它看起