相关疑难解决方法(0)

为什么可变结构"邪恶"?

在这里讨论了SO之后,我已经多次读过可变结构是"邪恶"的评论(就像这个问题的答案一样).

C#中可变性和结构的实际问题是什么?

c# struct mutable immutability

470
推荐指数
15
解决办法
7万
查看次数

CLR实现对接口成员的虚方法调用

出于好奇:CLR如何调度虚拟方法调用接口成员到正确的实现?

我知道CLR为每种类型维护的VTable,每个方法都有方法槽,并且每个接口都有一个额外的方法槽列表,指向相关的接口方法实现.但我不明白以下内容:CLR如何有效地确定从类型的VTable中选择哪个接口方法槽列表?

从2005年5月刊的MSDN杂志中了解CLR如何创建运行时对象的文章Dril Into .NET Framework Internals讨论了由接口ID索引的进程级映射表IVMap.这是否意味着同一进程中的所有类型都具有指向同一IVMap的相同指针?

它还指出:

如果MyInterface1由两个类实现,则IVMap表中将有两个条目.该条目将指回嵌入在MyClass方法表中的子表的开头.

CLR如何知道要选择哪个条目?它是否进行线性搜索以查找与当前类型匹配的条目?还是二元搜索?或者某种直接索引并且有一个可能有很多空条目的地图?

我还通过C#第3版阅读了CLR中的接口章节,但它没有谈到这一点.因此,这个问题的答案没有回答我的问题.

c# clr interface dispatch method-call

32
推荐指数
2
解决办法
5030
查看次数

在 C# 中解析和循环用户是/否控制台输入

我正在编写一个将在另一个代码中使用的方法,所以我首先单独编写它。

代码根据输入的第一个字符返回一个布尔值(是,是,y,是,否,...)。但是当输入不同于 Y 或 N 时,它开始起作用。在 eg3 中,它一直在循环中,直到 Console.Read 遇到 Y 或 N 或没有剩余字符。在最后一种情况下,它会再次要求输入。

我使用的是 Console.Read 错误还是我的代码中存在另一个错误?提前致谢

编辑:最终的解决方案是有效的吗?

例如1:

Yes or No?
YeahIthinkso   <--my input
True
Run Code Online (Sandbox Code Playgroud)

例2:

Yes or No?
Negative       <--my input
False
Run Code Online (Sandbox Code Playgroud)

例3:

Yes or No?
Idontknow      <--my input
You can only answer with Yes or No
Yes or No?
You can only answer with Yes or No
Yes or No?
You can only answer with Yes or No
Yes or No?
False
Run Code Online (Sandbox Code Playgroud)

编码:

static void Main(string[] args) …
Run Code Online (Sandbox Code Playgroud)

c#

3
推荐指数
1
解决办法
402
查看次数

标签 统计

c# ×3

clr ×1

dispatch ×1

immutability ×1

interface ×1

method-call ×1

mutable ×1

struct ×1