草庐IT

能不能

全部标签

c# - Convert.ToString() 到二进制格式不能按预期工作

inti=20;stringoutput=Convert.ToString(i,2);//Base2formattingi=-20;output=Convert.ToString(i,2);ValueExpectedActual200000000000000000000000000001010010100-201000000000000000000000000001010011111111111111111111111111101100我可以看到20的二进制输出可能已被截断,但我不理解-20的输出。我的期望基于base2表示法加上整数的带符号元素用最左边的第一个数字表示的信念。0表示正

c# - C# 中的 ref 和 out 参数不能被标记为变体

声明是什么意思?FromhererefandoutparametersinC#andcannotbemarkedasvariant.1)是否意味着以下不能做。publicclassSomeClass:IVariant{publicvirtualRDoSomething(refAargs){returnnull;}}2)或者这是否意味着我不能拥有以下内容。publicdelegateRReader(Aarg,strings);publicstaticvoidAssignReadFromPeonMethodToDelegate(refReaderpReader){pReader=ReadF

c# - 为什么有些对象不能从不同的线程访问?

我在用C#开发时遇到过这个问题好几次。我会愉快地编码,在线程之间来回传递对象等等,然后突然间我得到了这个熟悉的错误:"Thecallingthreadcannotaccessthisobjectbecauseadifferentthreadownsit."好吧,我以前处理过它,尤其是GUI线程上的对象。您只需编写一些额外的代码来围绕该特定问题进行编程。但是我偶尔会遇到一个对象,它无论如何都是普通的,但它不喜欢被不同的线程访问。编辑我在原来的帖子中弄错了导致访问异常的对象。这不是IPAddress,而不是它的System.Printing.PrintQueue.我用它来获取IP地址。这是

c# - 为什么 C# 结构方法不能返回对字段的引用,但非成员方法可以?

下面是一个结构实例方法的例子,它试图将只读引用返回给结构的实例字段:structFoo{internalint_x;publicrefreadonlyintMemberGetX()=>ref_x;//^^^//ErrorCS8170:Structmemberscannotreturn'this'orotherinstancemembersbyreference}这会产生错误CS8170结构成员无法通过引用返回“this”或其他实例成员。然而,使用扩展方法做同样的事情不会产生错误:staticclassFooExtensions{publicstaticrefreadonlyintExt

c# - 为什么不能将 Type 用作常量值?

引用MSDN-const(C#reference):Aconstantexpressionisanexpressionthatcanbefullyevaluatedatcompiletime.Therefore,theonlypossiblevaluesforconstantsofreferencetypesarestringandanullreference.根据:typeof(T)vs.Object.GetType()performance,typeof(T)是一个编译时表达式。那么为什么Type不能是常量值呢?以下代码不会编译:publicconstTypeINT_TYPE=ty

c# - 为什么我不能对两个泛型类型参数使用协变?

考虑以下示例:classBase{}classDerived:Base{}classTest1{privateListm_X;publicIEnumerableGetEnumerable(){returnm_X;}}这编译得很好,因为IEnumerable在T中协变.但是,如果我做完全相同的事情,但现在使用泛型:classTest2whereTDerived:TBase{privateListm_X;publicIEnumerableGetEnumerable(){returnm_X;}}编译错误Cannotconvertexpressiontype'System.Collection

c# - 为什么不能在属性中使用字符串插值?

我正在用C#6.0编写单元测试(MSTest),我注意到编译器处理属性中的字符串插值的方式有些奇怪。为什么这样做:[TestCategory(nameof(MyClass)+"-UnitTest")]什么时候不是?[TestCategory($"{nameof(MyClass)}-UnitTest")]忽略这可能不是对我的测试进行分类的好方法这一事实;我很好奇为什么编译器允许一个而不允许另一个。 最佳答案 当编译器遇到内插字符串时,它会立即将其转换为对String.Format的调用所以...[TestCategory($"{nam

c# - 为什么我不能在调试器中编辑包含匿名方法的方法?

因此,每次我在方法中编写了一个lambda表达式或匿名方法,但我完全都没有正确理解,我就被迫重新编译并重新启动整个应用程序或单元测试框架,以便按顺序要解决这个问题。这非常烦人,我最终浪费的时间比我最初使用这些结构节省的时间还多。这太糟糕了,我尽可能远离它们,即使Linq和lambda是我最喜欢的C#功能之一。我想这是一个很好的技术原因,也许有人知道?此外,有人知道它是否会在VS2010中修复吗?谢谢。 最佳答案 是的,您不能这样做是有充分理由的。原因很简单,就是成本。在C#(或VB)中启用此功能的成本非常。编辑lambda函数是一类

c# - 为什么不能使用 c# 对象初始值设定项语法调用方法?

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭11年前。为什么不能使用C#对象初始化语法调用方法?在我看来,属性setter是按照它们在语法中设置的顺序调用的,那么为什么不允许调用方法呢?如果有充分的理由,我会想念它。编辑我意识到方法和属性之间的语义差异和技术相似性。这个问题的目的是出于充分的技术原因探查他们没有包含该功能。这个。__curious_geek,我听到你在说什么,但我确信他们没有包括一些功能,因

c# - 接口(interface)不能声明类型

我在API中有一个抽象类,它被另一个程序集中的方法使用。该类内部定义了一个嵌套枚举,有点像这样:abstractpublicclassThing{publicenumStatus{Accepted,Denied,Pending};abstractpublicStatusstatus{get;privateset;}etc...}然后我决定,如果Thing是一个界面,那将是一个更好的设计。但我不能这样做:publicinterfaceThing{enumStatus{Accepted,Denied,Pending};Statusstatus{get;}etc...}这会产生错误消息“接口