草庐IT

数学运算

全部标签

c# - 在通用抽象类中实现强制转换运算符

我试图偷懒并在抽象基类中而不是在每个派生的具体类中实现转换运算符。我已经设法施放了一种方式,但无法施放另一种方式。我认为这可能是不可能的,但想在放弃之前选择集体SO的想法:publicinterfaceIValueType{TValue{get;set;}}publicabstractclassValueType:IValueType{publicabstractTValue{get;set;}publicstaticexplicitoperatorT(ValueTypevt){if(vt==null)returndefault(T);returnvt.Value;}publicsta

c# - 在 C# 中使用数学符号显示方程

我有一个非常简单的应用程序,可以生成方程式,非常简单的,比如4+5=xx+4=1215/x=3x^2=4sqrt(6)=x当我向自己展示像x+4=12这样的方程式时,我可以很好地阅读它,但如果x^2=4就更好了将显示为x2=4。它不必像图像一样,可以是其他任何东西,但它应该是这样用户可以理解方程式。是否有一些图书馆可以帮我解决这个问题? 最佳答案 您可以将MathML库添加到您的应用程序中。这是一个通用的数学格式化库。MathMLinC#这些示例还包括非XML定义的方程式。您可能正在寻找的另一个库应该是用于C#的LaTeX,不过,我

c# - 在 C# 中定义新的运算符?

这个问题在这里已经有了答案:关闭12年前。PossibleDuplicate:Isitpossibletocreateanewoperatorinc#?我喜欢C#,但我希望它能够在类上定义我自己的运算符,例如A=>B,而不必执行A.Implies(B)。我认为如果您可以将[+-*/&^|%$#@>

c# - x64 平台上调试器中奇怪的三元运算符行为

我在我的C#代码中使用了一个非常简单的三元表达式:helperClass.SomeData=helperClass.HasData?GetSomeData():GetSomeOtherData();在这两种情况下,表达式的每个路径上的函数都返回一个非空对象,但如果我在调试器中查看结果,它是空的,直到我在代码中引用它,例如使用断言:Debug.Assert(helperClass.SomeData!=null);只有在Debug模式下使用“x64”或“任何CPU”平台设置时才会出现这种情况。在“x86”模式下没问题。在假设我在编译器或调试器中发现错误之前,我尽量保持谨慎,但我找不到对此行

c# - 运算符 '==' 不能应用于类型 'int' 和 'string' 的操作数

我在这里有一点误解为什么我在这里有一个错误我需要解析它这段代码有什么问题吗?UberTrackerEntitiesctx=UberFactory.Context;IEnumerableusers=HtUser.GetAll();stringselectedBU=rcbBusinessUnits.SelectedValue;stringselectedDepartment=rcbDepartment.SelectedValue;HtDepartmentdepartment=ctx.HtDepartments.SingleOrDefault(d=>d.DepartmentId==selec

c# - 在可空类型上使用合并空运算符会更改隐式类型

我希望接下来的三行代码是相同的:publicstaticvoidTestVarCoalescing(DateTime?nullableDateTime){vardateTimeNullable1=nullableDateTime.HasValue?nullableDateTime:DateTime.Now;vardateTimeNullable2=nullableDateTime!=null?nullableDateTime:DateTime.Now;vardateTimeWhatType=nullableDateTime??DateTime.Now;}在所有情况下,我都将nullab

c# - 运算符 'op ' 不能应用于类型 'dynamic' 和 'lambda expression' 的操作数

我似乎无法将二元运算应用于lambda表达式、委托(delegate)和方法组。dynamicMyObject=newMyDynamicClass();MyObject>>=()=>1+1;第二行给出错误:Operator'>>='cannotbeappliedtooperandsoftype'dynamic'and'lambdaexpression'为什么?运算符功能不是由我的自定义TryBinaryOperation覆盖决定的吗? 最佳答案 这不是MyDynamicClass的问题,问题是您不能将lambda表达式作为动态表达式

c# - 为什么不能使用 is 运算符来区分 bool 和 Nullable<bool>?

我遇到了这个,很好奇为什么不能使用is运算符区分bool和Nullable?示例;voidMain(){booltheBool=false;NullabletheNullableBoolThatsFalse=false;NullabletheNullableBoolThatsNull=null;voidWhatIsIt(objectvalue){if(valueisbool)Console.WriteLine("It'sabool!");if(valueisNullable)Console.WriteLine("It'saNullable!");if(valueisnull)Conso

c# - 隐式 (bool) 和 == 运算符覆盖 - 正确处理 if 语句

我有一个自定义类,它实现了bool运算符的==和implicit。这是处理所有可能的if==/!=语句并获得预期结果的正确方法吗?像这样:publicclassFoo{publicboolResult{get;set;}publicstaticbooloperator==(bool@bool,Foofoo){returnEquals(foo,@bool);}publicstaticbooloperator!=(bool@bool,Foofoo){returnNotEquals(foo,@bool);}publicstaticbooloperator==(Foofoo,bool@bool

c# - C# 中的按位 "~"运算符

考虑这个单元测试代码:[TestMethod]publicvoidRunNotTest(){//10101100=128+32+8+4=172byteb=172;//01010011=64+16+2+1=83Assert.AreEqual(83,(byte)~b);}这个测试通过了。但是,如果没有字节转换,它就会失败,因为“~”运算符返回-173的值。这是为什么? 最佳答案 对int的提升发生在byte上,因为没有为它们定义二进制补码。参见Unarynumericpromotions和Bitwisecomplementoperato