问题标签 [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.

0 投票
9 回答
537 浏览

c# - 是否有令人信服的理由反对使用 C# 关键字“as”?

我发现使用以下内容:

比以下更容易编写和理解:

是否有令人信服的理由使用第一个构造?

0 投票
5 回答
168 浏览

c# - 使用“as”关键字会丢失对象初始化

我正在使用派生类并使用 as 关键字将基类转换为它。当我这样做时,派生类构造函数被调用,并且它的对象被初始化,但派生实例并没有以初始化的对象结束(有空值)。这是一个代码示例。

问题是“as”通常用于派生->基础而不是基础->派生,还是这里有其他工作?

0 投票
10 回答
1843 浏览

c# - 为什么'is'被实现为'as'?

鉴于这是一个非常自然的用例(如果您不知道as实际做了什么),

等效于(也就是说,编译器从上述代码生成的CIL将等效于):

编辑:

我想我没有把我的问题说清楚。我永远不会写第二个片段,因为它当然是多余的。我声称编译器在编译第一个片段时生成的 CIL 等同于第二个片段,这是多余的。问题: a) 这是正确的吗?b) 如果是这样,为什么要这样is实施?

这是因为我发现第一个片段比实际写得好的片段更清晰、更漂亮

结论:

优化is/ ascase 不是编译器的职责,而是 JIT 的职责。

is此外,与空检查一样,它比两种替代方法( andasisand )具有更少(且成本更低)的指令cast

附录:

CIL 与 nullcheck (.NET 3.5) 一样:

用于 is 和 cast (.NET 3.5) 的 CIL:

用于 is 和 as (.NET 3.5) 的 CIL:

为了简短起见,这些已被编辑(删除了方法声明、nops 和对某事()的调用)。

0 投票
3 回答
5030 浏览

python - python的`with`语句目标意外地是None

好像我不明白 --- pythonwith语句。

考虑这个类:

现在,当使用它时with,就像在

我希望有一些输出,例如<test instance at memore blah>。但我得到None

这里有什么问题吗?任何建议都会有所帮助。

(我使用的是 Python 2.6.6。)

编辑:

感谢 ephement将我指向文档。该__enter__方法应阅读

0 投票
3 回答
14186 浏览

c# - Java中有没有类似于C#的'AS'关键字的关键字

正如我们所知,C# 提供了一个 AS 关键字,该关键字自动执行检查 Object 是否属于某个类型,如果是,则将其强制转换为所需的类型,否则返回 null。

在上面的示例中,对象 obj 可以是用户类型或其他类型。用户将获得 User 类型的对象或 null。这是因为 C# 的 As 关键字首先执行检查,如果可能,然后将对象强制转换为结果类型。

那么Java中是否有任何关键字相当于C#的AS关键字?

0 投票
2 回答
4048 浏览

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 的机会是?

0 投票
3 回答
1427 浏览

c# - 接受引用类型和可空类型以适应“as”关键字的通用函数?

这纯粹是好奇/挑战,根本没有实际意义。所以我不是在寻找完成工作的替代解决方案。

从这个问题最有效的方法来检查 DBNull 然后分配给一个变量?我发现这个答案看起来像:

我可以将上述表达式移动到一个通用函数(或两个,或更多),以便它同时接受两者int?string并且我可以这样称呼它:

要求:

1) 在 s 的情况下,我需要一个选项来指定默认值DBNulldefault(T)如果我没有指定默认值,我还需要一个返回选项。所以这行不通:

因为我不能打电话oSomeObject.StringMemeber = oRow.Read<string>("Name")

它不必是可选参数,甚至可以是重载:

这不会编译,因为方法 1 和 2 具有相同的签名。

2) 泛型函数(在重载的情况下)应该具有相同的名称。

3)as关键字必须使用检查和强制类型。正如我之前所说,我并不是真的在寻找解决方案来读取IDataRecord或增强性能或其他东西。


有类似的问题

  1. 使用引用类型和可为空值类型的 C# 泛型类

  2. 是否可以创建一个接受(可为空)值类型和引用类型的 C# 泛型方法?

  3. 通用方法可以同时处理引用和可空值类型吗?

但这是非常特定于as关键字的。所以那里的答案不适用。

附录:我知道不会有一个单一的解决方案。我会接受哪个是最优雅的选择。

0 投票
2 回答
70 浏览

c# - `as` 关键字是否带回了类的所有成员?

我一直在做一些测试,遇到了一些奇怪的事情。说我有这个界面

如您所见,它是只读的。所以现在我要创建一个实现它的类

现在您可以阅读并设置它。所以让我们做一些测试:

首先我这样做:

这是意料之中的,然后我这样做了:

也值得期待。但是当我这样做时:

为什么它不起作用?不是把robot2当成FighterBot吗?因此,它不应该能够设置燃料吗?

0 投票
4 回答
111 浏览

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

0 投票
2 回答
1397 浏览

c# - 起订量和“as”关键字

我正在尝试提供一个可以帮助我测试的模拟:

但是据我所知,“as”关键字返回 null 即使我可以在调试器中看到 Thread.CurrentPrincipal 是模拟。

为了测试这个理论,我整理了这个简短的演示:

如何为在后台使用 as 关键字的代码提供最小起订量?

据我了解,也许我需要为代理提供一种回退方式?

我有点意识到这是不可能的,但想知道人们解决这个问题的方法是什么。