标签: casting

C++从1个字符串转换为字符串?

我真的没有找到任何接近的答案......

相反的方式非常简单,如str [0]

但我只需要将1个字符串转换为字符串...

像这样:

char c = 34;
string(1,c);
//this doesn't work, the string is always empty.

string s(c);
//also doesn't work.

boost::lexical_cast<string>((int)c);

//also return null
Run Code Online (Sandbox Code Playgroud)

c++ casting

108
推荐指数
3
解决办法
24万
查看次数

Java 6与Java 7之间自动拆箱的差异

我注意到Java SE 6和Java SE 7之间的自动拆箱行为有所不同.我想知道为什么会这样,因为我找不到这两个版本之间这种行为的变化的任何文档.

这是一个简单的例子:

Object[] objs = new Object[2];
objs[0] = new Integer(5);
int myInt = (int)objs[0];
Run Code Online (Sandbox Code Playgroud)

这与Java SE 7中的javac编译良好.但是,如果我给编译器"-source 1.6"参数,我在最后一行得到一个错误:

inconvertible types
found   : java.lang.Object
required: int
Run Code Online (Sandbox Code Playgroud)

我尝试下载Java SE 6以使用本机版本6编译器进行编译(不带任何-source选项).它同意并给出与上面相同的错误.

什么给出了什么?从一些更多的实验看来,Java 6中的拆箱似乎只能清楚地(在编译时)是盒装类型的unbox值.例如,这适用于两个版本:

Integer[] objs = new Integer[2];
objs[0] = new Integer(5);
int myInt = (int)objs[0];
Run Code Online (Sandbox Code Playgroud)

因此,似乎在Java 6和7之间,取消装箱功能得到了增强,因此它可以一次性抛出和取消对象类型,而不知道(在编译时)该值是正确的盒装类型.但是,通过阅读Java语言规范或Java 7发布时写的博客文章,我看不出有什么变化,所以我想知道改变是什么以及这个"功能"被称为什么?

好奇心:由于变化,可能会触发"错误"的拆箱:

Object[] objs = new Float[2];
objs[0] = new Float(5);
int myInt = (int)objs[0];
Run Code Online (Sandbox Code Playgroud)

这编译得很好但在运行时给出了ClassCastException.

对此有何提及?

java unboxing casting java-7

107
推荐指数
2
解决办法
8006
查看次数

将基类转换为派生类

在C#中是否可以将基类对象显式转换为其派生类之一?目前我认为我必须为我的派生类创建一个构造函数,它接受一个基类对象作为参数并复制属性值.我真的不喜欢这个想法,所以我想尽可能避免它.

这似乎不应该工作(对象被实例化为新的基础,因此不应该为派生类的额外成员分配内存)但是C#似乎允许我这样做:

class BaseClass
{
  ... some stuff ...
}

class DerivedClass : BaseClass
{
    public bool MyDerivedProperty{ get; set; }
}


static void Main(string[] args)
{
    BaseClass myBaseObject = new BaseClass();
    DerivedClass myDerivedObject = myBaseObject as DerivedClass;

    myDerivedObject.MyDerivedProperty = true;
}
Run Code Online (Sandbox Code Playgroud)

c# inheritance casting

106
推荐指数
4
解决办法
18万
查看次数

PHP字符串浮动

我根本不熟悉PHP并且有一个简单的问题.

我有2个变量@pricePerUnit和@invoicedUnits.以下是将这些值设置为值的代码:

$InvoicedUnits = ((string) $InvoiceLineItem->InvoicedUnits);
$pricePerUnit = ((string) $InvoiceLineItem->PricePerUnit);
Run Code Online (Sandbox Code Playgroud)

如果我输出这个,我得到正确的值.让我们说5000个发票单位和1.00的价格.

现在,我需要显示花费的总金额.当我将这两者相乘时,它不起作用(正如预期的那样,这些是字符串).

但我不知道如何在PHP中解析/转换/转换变量.

我该怎么办?

php string floating-point casting

104
推荐指数
4
解决办法
34万
查看次数

Java Class.cast()与强制转换运算符

在我的C++时代被教授关于C风格演员的邪恶,我很高兴首先发现在Java 5中java.lang.Class已经获得了一种cast方法.

我认为最后我们有一个处理铸造的OO方式.

结果Class.caststatic_castC++不同.它更像是reinterpret_cast.它不会在预期的位置生成编译错误,而是会延迟到运行时.这是一个简单的测试用例,用于演示不同的行为.

package test;

import static org.junit.Assert.assertTrue;

import org.junit.Test;


public class TestCast
{
    static final class Foo
    {
    }

    static class Bar
    {
    }

    static final class BarSubclass
        extends Bar
    {
    }

    @Test
    public void test ( )
    {
        final Foo foo = new Foo( );
        final Bar bar = new Bar( );
        final BarSubclass bar_subclass = new BarSubclass( );

        {
            final Bar bar_ref = bar;
        }

        { …
Run Code Online (Sandbox Code Playgroud)

java generics casting compiler-warnings

104
推荐指数
5
解决办法
16万
查看次数

类型断言与TypeScript中较新的`as`运算符之间有什么区别?

TypeScript规范调用类型断言之间有什么区别:

var circle = <Circle> createShape("circle");
Run Code Online (Sandbox Code Playgroud)

较新的 as运营商:

var circle = createShape("circle") as Circle;
Run Code Online (Sandbox Code Playgroud)

这两者通常用于编译时转换?

casting typescript

104
推荐指数
2
解决办法
3万
查看次数

'is'与使用null check的try cast相比

我注意到Resharper建议我转过身:

if (myObj.myProp is MyType)
{
   ...
}
Run Code Online (Sandbox Code Playgroud)

进入这个:

var myObjRef = myObj.myProp as MyType;
if (myObjRef != null)
{
   ...
}
Run Code Online (Sandbox Code Playgroud)

为什么会建议这种变化?我已经习惯了Resharper建议优化更改和代码减少更改,但这感觉就像它想要我的单一陈述并将其转换为双线程.

根据MSDN:

一个 表达式如果两个满足以下条件的值为true:

表达式不为空.表达式可以转换为类型.也就是说,表单的强制转换表达式将在(type)(expression)不抛出异常的情况下完成.

我是否误读了,或者没有is完全相同的检查,只需要在一行中而不需要为空检查显式创建另一个局部变量?

.net c# resharper casting

102
推荐指数
3
解决办法
4万
查看次数

将整数转换为长整数

我需要使用反射来获取字段的值.碰巧我并不总是确定该字段的数据类型是什么.为此,为了避免一些代码重复,我创建了以下方法:

@SuppressWarnings("unchecked")
private static <T> T getValueByReflection(VarInfo var, Class<?> classUnderTest, Object runtimeInstance) throws Throwable {
  Field f = classUnderTest.getDeclaredField(processFieldName(var));
  f.setAccessible(true);
  T value = (T) f.get(runtimeInstance);

  return value;
}
Run Code Online (Sandbox Code Playgroud)

并使用此方法,如:

Long value1 = getValueByReflection(inv.var1(), classUnderTest, runtimeInstance);
Run Code Online (Sandbox Code Playgroud)

要么

Double[] value2 = getValueByReflection(inv.var2(), classUnderTest, runtimeInstance);
Run Code Online (Sandbox Code Playgroud)

问题是,我似乎无法施展IntegerLong:

java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来实现这一目标?

我使用的是Java 1.6.

java reflection casting

100
推荐指数
8
解决办法
34万
查看次数

将List <T>转换为List <Interface>

public interface IDic
{
    int Id { get; set; }
    string Name { get; set; }
}
public class Client : IDic
{

}
Run Code Online (Sandbox Code Playgroud)

我怎样才能投List<Client>List<IDic>

.net c# casting interface

100
推荐指数
5
解决办法
5万
查看次数

如何将Object强制转换为实际类型?

如果我有:

void MyMethod(Object obj) {   ...   }
Run Code Online (Sandbox Code Playgroud)

obj该如何演绎其实际类型?

c# types casting typeof object

100
推荐指数
3
解决办法
27万
查看次数