草庐IT

符号运算

全部标签

c# - 空传播运算符、out 参数和错误的编译器错误?

假设我有一个类,其属性类型为Dictionary,那可能是空的。这会编译但调用TryGetValue()可以抛出NullRef运行时异常:MyClassc=...;stringval;if(c.PossiblyNullDictionary.TryGetValue("someKey",outval)){Console.WriteLine(val);}所以我添加了一个null传播运算符来防止null,但这不会编译:MyClassc=...;stringval;if(c.PossiblyNullDictionary?.TryGetValue("someKey",outval)??false)

c# - Rx 运算符到不同的序列

重要:有关结果的描述和更多详细信息,请同时查看我的回答我需要对通常被复制的一系列对象/事件进行分组和过滤,并使用TimeSpan间隔对它们进行缓冲。我尝试用一​​些大理石图更好地解释它:X-X-X-X-X-Y-Y-Y-Z-Z-Z-Z-X-X-Y-Z-Z会产生X---Y---Z---X---Y---Z其中X、Y和Z是不同的事件类型,'---'表示间隔。此外,我还想通过一个关键属性来区分它在所有类型上都可用,因为它们有一个共同的基类:X,Y,Z:A并且A包含一个属性Key。使用符号X.a表示X.Key=a,最终示例将是:X.a-X.b-X.a-Y.b-Y.c-Z.a-Z.a-Z.c-Z.b

c# - F# 中使用的运算符 (-) 引发 C# 不支持指定方法的异常

我在F#中有一个使用(-)运算符的通用函数:letinlinesubab=a-b现在我从C#调用这个函数:inta=sub(4,1);这引发了一个错误:UnhandledException:System.NotSupportedException:Specifiedmethodisnotsupported.atProjA.MainClass.Main(System.String[]args)[0x00000]in:0[ERROR]FATALUNHANDLEDEXCEPTION:System.NotSupportedException:Specifiedmethodisnotsuppor

C# null 合并运算符返回 null

最近我的同事向我展示了一段无法正常工作的代码:publicclassSomeClass{privateIList_categories;publicvoidSetCategories(){_categories=GetCategories()??newList();DoSomethingElse();}publicIListGetCategories(){returnRetrieveCategories().Select(Something).ToList();}}(我知道运算符是多余的,因为linqToList将始终返回一个列表,但这就是代码的设置方式)。问题是_categories

c# - (-) Convert 方法中使用的符号

我在浏览一些C#代码时发现了这一行:Matrix[i,j]=Convert.ToInt32(grab[i,j]-'0');(-)到底是做什么的?如果有的话,还有另一种写法吗? 最佳答案 -(减号)做的正是它一直做的事——减法。这里发生的事情是从[i,j]处的字符中减去零'0'的字符代码。这会将数字字符转换为相应数字的整数值。例如,如果你计算chardigitChar='7';intdigitVal=digitChar-'0';digitVal的值为七。 关于c#-(-)Convert方法

c# - Linq 和相等运算符 : Expression of type 'System.Int32' cannot be used for parameter of type 'System.Object'

我试图重写C#中的相等(==)运算符来处理任何类型与自定义类型的比较(自定义类型实际上是null周围的包装器/框)。所以我有这个:internalsealedclassNothing{publicoverrideboolEquals(objectobj){if(obj==null||objisNothing)returntrue;elsereturnfalse;}publicstaticbooloperator==(objectx,Nothingy){if((x==null||xisNothing)&&(y==null||yisNothing))returntrue;returnfal

c# - 隐式运算符应该处理 null 吗?

我们有一个具有隐式字符串运算符的类型。它看起来像这样:publicclassFoo{readonlystring_value;Foo(stringvalue){_value=value;}publicstaticimplicitoperatorstring(Foofoo){returnfoo._value;}publicstaticimplicitoperatorFoo(stringfooAsText){returnnewFoo(fooAsText);}}我们刚刚遇到这样一种情况,其中传递给隐式运算符的实例是null。显然,我们以NullReferenceException结束。我认为

c# - XML 文档中的引用运算符

我想在中引用一个运算符XMLdocumentation标签,但我似乎找不到任何关于如何操作的提示。MSDNarticle在这个标签上只展示了一个引用方法的简单例子,并没有涉及可以引用的不同类型的成员。特别是,我想引用一个隐式转换运算符,但也欢迎引用运算符的一般规则。例子假设我们有一个简单的结构,我们为其定义了==,!=和隐式转换运算符:publicstructMyStructure{publicintValue{get;set;}publicstaticbooloperator==(MyStructurex,MyStructurey)=>x.Value==y.Value;publics

c# - 为什么 C# 5.0 await 关键字被列为运算符而不是修饰符?

MSDN库liststheawaitkeywordasanoperator.这对我来说似乎很奇怪-我以为它是一个修饰符,比如theasynckeyword.为什么这是一个运算符? 最佳答案 async是声明的修饰符。类似于public.await是一种使用异步运算符并对其执行某些操作的操作。类似于return.await不是修改放在它后面的内容,而是指定如何处理该操作。对比async实际上并没有修改任何东西,它只是标记一个特定的方法是async的样式(从语法的角度来看,最终的await执行了对方法结构的所有更改)。

c# - 重载的 false 运算符什么时候被执行,它有什么用?

我一直在寻找实际执行重载的false运算符的实际工作代码。Thisquestion(What'sthefalseoperatorinC#goodfor?)有点相同,但接受的答案链接到返回404错误的url。我也看过Howdoesoperatoroverloadingoftrueandfalsework?以及其他一些问题。我在几乎所有答案中发现的是,false仅在您使用短路和类似x&&y时才会执行。这被评估为T.false(x)?x:T.&(x,y).好的,所以我有以下代码。struct包含一个int并且如果int大于零则认为它自己为真。:publicstructMyStruct{pri