问题标签 [as-keyword]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 是否有令人信服的理由反对使用 C# 关键字“as”?
我发现使用以下内容:
比以下更容易编写和理解:
是否有令人信服的理由不使用第一个构造?
c# - 使用“as”关键字会丢失对象初始化
我正在使用派生类并使用 as 关键字将基类转换为它。当我这样做时,派生类构造函数被调用,并且它的对象被初始化,但派生实例并没有以初始化的对象结束(有空值)。这是一个代码示例。
问题是“as”通常用于派生->基础而不是基础->派生,还是这里有其他工作?
c# - 为什么'is'被实现为'as'?
鉴于这是一个非常自然的用例(如果您不知道as
实际做了什么),
等效于(也就是说,编译器从上述代码生成的CIL将等效于):
编辑:
我想我没有把我的问题说清楚。我永远不会写第二个片段,因为它当然是多余的。我声称编译器在编译第一个片段时生成的 CIL 等同于第二个片段,这是多余的。问题: a) 这是正确的吗?b) 如果是这样,为什么要这样is
实施?
这是因为我发现第一个片段比实际写得好的片段更清晰、更漂亮
结论:
优化is
/ as
case 不是编译器的职责,而是 JIT 的职责。
is
此外,与空检查一样,它比两种替代方法( andas
和is
and )具有更少(且成本更低)的指令cast
。
附录:
CIL 与 nullcheck (.NET 3.5) 一样:
用于 is 和 cast (.NET 3.5) 的 CIL:
用于 is 和 as (.NET 3.5) 的 CIL:
为了简短起见,这些已被编辑(删除了方法声明、nops 和对某事()的调用)。
python - python的`with`语句目标意外地是None
好像我不明白 --- pythonwith
语句。
考虑这个类:
现在,当使用它时with
,就像在
我希望有一些输出,例如<test instance at memore blah>。但我得到None。
这里有什么问题吗?任何建议都会有所帮助。
(我使用的是 Python 2.6.6。)
编辑:
感谢
ephement将我指向文档。该__enter__
方法应阅读
c# - Java中有没有类似于C#的'AS'关键字的关键字
正如我们所知,C# 提供了一个 AS 关键字,该关键字自动执行检查 Object 是否属于某个类型,如果是,则将其强制转换为所需的类型,否则返回 null。
在上面的示例中,对象 obj 可以是用户类型或其他类型。用户将获得 User 类型的对象或 null。这是因为 C# 的 As 关键字首先执行检查,如果可能,然后将对象强制转换为结果类型。
那么Java中是否有任何关键字相当于C#的AS关键字?
groovy - 如何使用 groovy 的 AS 关键字
这可能是重复的,但“as”对谷歌来说是一个令人难以置信的硬关键字,即使 SO 忽略“as”作为查询的一部分。
所以我想知道如何实现一个自反地支持“as”的类。对于示例类:
这允许类似:
工作,但无助于:
我可能必须以某种方式附加/修改 String 和 Integer 上的“asType”,但我觉得这样的任何更改都应该仅限于“X”类...... X 类是否可以实现如下方法:
或者以某种方式从 X 中修改 String/Integer 类。这似乎很难,因为在实际使用 X 之前它不会在 X 中执行任何代码......如果我第一次使用 X 是“3 as X”,X 会得到在 Groovy 尝试调用之前覆盖 Integer 的 asType 的机会是?
c# - 接受引用类型和可空类型以适应“as”关键字的通用函数?
这纯粹是好奇/挑战,根本没有实际意义。所以我不是在寻找完成工作的替代解决方案。
从这个问题最有效的方法来检查 DBNull 然后分配给一个变量?我发现这个答案看起来像:
我可以将上述表达式移动到一个通用函数(或两个,或更多),以便它同时接受两者int?
,string
并且我可以这样称呼它:
要求:
1) 在 s 的情况下,我需要一个选项来指定默认值DBNull
。default(T)
如果我没有指定默认值,我还需要一个返回选项。所以这行不通:
因为我不能打电话oSomeObject.StringMemeber = oRow.Read<string>("Name")
它不必是可选参数,甚至可以是重载:
这不会编译,因为方法 1 和 2 具有相同的签名。
2) 泛型函数(在重载的情况下)应该具有相同的名称。
3)as
关键字必须使用检查和强制类型。正如我之前所说,我并不是真的在寻找解决方案来读取IDataRecord
或增强性能或其他东西。
有类似的问题
但这是非常特定于as
关键字的。所以那里的答案不适用。
附录:我知道不会有一个单一的解决方案。我会接受哪个是最优雅的选择。
c# - `as` 关键字是否带回了类的所有成员?
我一直在做一些测试,遇到了一些奇怪的事情。说我有这个界面
如您所见,它是只读的。所以现在我要创建一个实现它的类
现在您可以阅读并设置它。所以让我们做一些测试:
首先我这样做:
这是意料之中的,然后我这样做了:
也值得期待。但是当我这样做时:
为什么它不起作用?不是把robot2当成FighterBot吗?因此,它不应该能够设置燃料吗?
c# - Why initialize an object using as keyword
I've just run across some code I don't understand. It is effectively
I don't understand the advantage of doing this, so I created my own console application to see what it does.
I can only assume this offers some additional help in relation to polymorphous but I can't work out how or see any difference between:
and
c# - 起订量和“as”关键字
我正在尝试提供一个可以帮助我测试的模拟:
但是据我所知,“as”关键字返回 null 即使我可以在调试器中看到 Thread.CurrentPrincipal 是模拟。
为了测试这个理论,我整理了这个简短的演示:
如何为在后台使用 as 关键字的代码提供最小起订量?
据我了解,也许我需要为代理提供一种回退方式?
我有点意识到这是不可能的,但想知道人们解决这个问题的方法是什么。