问题标签 [as-operator]

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 投票
6 回答
6417 浏览

c# - 将一个对象转换为另一种类型

我有一类名为 A 和一类 B

现在我有一个程序集,其类的函数接受 A 类的对象。这个程序集不是由我创建的,所以我没有任何控制权。基本上是第三党集会。

但我想提供我的 B 类对象,因为它有点定制。请放心,它包含 A 类的所有属性。如何将我的 B 类对象类型转换为 A 类,以便我可以将 3rd 方程序集集成到我的项目中,并根据我的需要自定义外观?

如果我有这样的事情(A)objB是不允许的。然后我尝试了这个:

但是这种情况下的问题是 objA 为空。

为避免混淆:A 级和组装由第 3 方提供。

提前致谢 :)

0 投票
6 回答
15583 浏览

c# - 为什么我不能对结构使用 as 关键字?

我定义了以下结构:

后来,我将它分配给另一个对象的 Tag 属性:

但是当我尝试像这样检索 Tag 属性时,

Visual Studio 给出以下编译时错误:

运算符 as 必须在引用类型或可为空的类型中使用

那是什么意思?我该如何解决?

0 投票
4 回答
132 浏览

c# - `as` 会启用多态性吗?会将继承的类传递给采用基类启用多态性的方法吗?

首先,我将使用virtualoverride

例如,基类 A 具有方法A.do(),继承的类 B 具有B.do()覆盖 A 的方法。

如果我打电话(B as A).do(),它do()会执行哪个?

或者,如果有一个方法void mymethod(A a) {a.do()},现在我调用它B b; mymethod(b),它会执行b.do()吗?

0 投票
7 回答
19505 浏览

c# - 什么时候应该在 C# 中使用 as 关键字

当您大多数时候想要更改类型时,您只想使用传统的演员表。

这很好,因为:

  • 它很快
  • 如果出现问题,它会抱怨(而不是给对象是空异常)

那么,什么是as我无法真正找到或想到完全适合它的东西的一个很好的例子呢?

注意:实际上我认为有时编译器会阻止使用强制转换as(泛型相关?)。

0 投票
7 回答
18366 浏览

delphi - 如何一次将“Sender”参数与“As”运算符一起用于一个以上的类?

在Delphi中,有时我们需要这样做......

...但有时我们需要使用其他对象类重复该功能,例如...

...因为运营商As不接受灵活性。它必须知道类才能.Text允许().

有时代码会充满相似之处functionsprocedures因为我们需要使用我们无法指定的相似视觉控件来做同样的事情。

这只是一个使用示例。通常,我将这些代码用于更复杂的代码,以在许多控件和其他类型的对象上实现标准目标。

是否有替代方案或技巧可以使这些任务更加灵活?

0 投票
3 回答
615 浏览

c# - 结构上的 as 运算符?

我不明白。As运营商:

as 运算符用于在兼容的引用或可空类型之间执行某些类型的转换。

那么为什么以下工作?

  • Baby是一个结构,创建它会将值放入stack. 此处不涉及参考。

  • 这里当然没有可为空的类型。

关于我为什么错的任何解释?

0 投票
1 回答
816 浏览

c# - 如何施放动作行动

我该如何做到这一点?或任何解决方法?

0 投票
3 回答
176 浏览

c# - 具有可为空值类型的 as 运算符是否不必要地慢?

考虑这段代码:

据我所知,方法FillUsingAsNullableFillUsingOwnCode应该是等价的。

但看起来“自己的代码”版本显然更快。

2编译“x86”或“x64”的2选项,编译“调试”或“发布(优化)”的3选项,以及返回GetObject方法的选项。据我所知,在所有这些2*2*3 == 12情况下,“自己的代码”版本明显快于“可空”版本。

问题:是不必要的asNullable<>,还是我在这里遗漏了什么(很可能)?

相关线程:“as”和可空类型的性能惊喜

0 投票
1 回答
2351 浏览

c# - ActionResult 作为 ViewResult 返回 null.. 但我可以显式转换?

我正在编写一些单元测试,我有一个场景,如果条件为真,控制器操作应该返回 a HttpNotFoundResult,否则它应该返回 aViewResult并在其中有一个特定的模型。

作为测试之一(测试它应该返回 a 的场景ViewResult),我执行该操作,然后尝试将结果转换为 a ViewResult。但是,当使用var result = myController.MyAction() as ViewResult(where resultis an ActionResult) 时,result总是评估为 null...但是当我这样做时var result = (ViewResult)myController.MyAction(),结果会很好地转换。

为什么是这样?我不理解as正确的用法吗?

相关代码:

编辑:带有要点的完整示例。抱歉,它似乎不喜欢语法突出显示。 https://gist.github.com/DanPantry/dcd1d55651d220835899

0 投票
1 回答
96 浏览

c# - Java 到 C# 学习/清晰

所以我星期一早上开始学习 C#,过去两天我一直在看一个又一个视频,现在我有一些观察,我想知道我的想法是否正确。

我的过去是大约 4 年的大学水平 Java 编程,所以如果需要任何解释并将其引用到 Java 项目是相关的,请随时建立一个心态链接。

我也开始了我的第一个“真正的”应用程序开发实习,所以在我开始从事基于 C# 和 .Net 的项目之前,他们让我在第一周自己学习东西。

任何将不胜感激!

  1. “as”运算符:据我了解,这基本上是一个演员表。所以我可以说

    这应该相当于(双)a,对吗?

    或者

    这将类似于(标签)发件人,发件人是一个对象,但现在被转换为标签,对吗?

  2. 动态型:我对这个的理解,就是它是一个“万物皆可”!类型,表示动态d;可以用作 int、double、object、string 等。它可以应用于任何东西。是/否/某种?

    /li>
  3. 如果这是正确的,这与拳击有什么不同?装箱只是“as”运算符/动态类型,但仅用于对象类型吗?

  4. Integer Literals,它们多久使用一次,在什么场景下使用?我看了他们的一段,他们觉得很奇怪。我将进行应用程序开发,所以如果这些有用,请解释它们的一些日常用途

    我只是对这些都将用于应用程序开发类型的地方感到困惑。他们对我来说更像是直接组装交互,但也许这是应用程序开发的一个常见部分(第一次“真正的”实习)

  5. {#} 语法/WriteLine:所以我制作了一些演示应用程序,它们使用的语法类似于..

    或者

    据我所知,{0}、{1}、{2} 等...以某种方式将值从集合中提取出来(我认为这不是我实际创造的)。我不确定这被“称为”什么,所以我不知道如何用谷歌搜索它。

    有人介意指出我正确的方向吗,因为我发现这是一个非常有用的操作。

  6. 可空类型:从我在这里学到的是一个表达式,如

    不会抛出任何错误,因为这将是一个有效的交互,而在 Java 中这会导致某种编译错误。

    我相信您还可以设置一个可以为空的类型,并以实例化开头,例如:

    这将与上面相同,但作为标记为它的 null 属性。

    我的问题是,

    • “Nullable”可以应用于所有类型还是仅应用于某些类型?

    • 您能否为 d 提供一个实际值,但仍使检查返回 null?由于您可以将 null 属性标记为类型,因此我猜测“null”的属性和“value”本身是相互独立地处理/检查的。这是正确还是错误的猜测?(如果需要,我可以尝试更好地解释)

  7. 字符串问题!

    • 我们在 C# 中使用字符串是否像在 Java 中使用字符串一样?(大写)

    • 使用子字符串时,为什么这两个字符串返回不同的答案?

      /li>
  8. 可以添加更多...

    希望这不是要求太多,我只是想确保我在接下来的几天里尽可能地学习 C#。

    如果你们中的任何人都知道一些关于 C# 的好文章/教程/等关于新应用程序开发人员应该知道的内容,请向我指出那个方向。我也有一个 PluralSight 帐户,因此您也可以将我引导到他们的教程。

    谢谢,

    -奥斯汀