添加'a' + 'b'它时产生195.是输出数据类型char还是int?
有没有办法强制/限制传递给基元的类型? (bool,int,string等)
现在,我知道您可以通过where子句将泛型类型参数限制为类型或接口实现.然而,这不符合基元(AFAIK)的费用,因为它们并非都有共同点(除了某人之前的对象!:P).
所以,我目前的想法只是咬紧牙关并做一个大的switch语句并在失败时抛出ArgumentException.
编辑1:
只是为了澄清:
代码定义应该是:
public class MyClass<GenericType> ....
Run Code Online (Sandbox Code Playgroud)
和实例化:
MyClass<bool> = new MyClass<bool>(); // Legal
MyClass<string> = new MyClass<string>(); // Legal
MyClass<DataSet> = new MyClass<DataSet>(); // Illegal
MyClass<RobsFunkyHat> = new MyClass<RobsFunkyHat>(); // Illegal (but looks awesome!)
Run Code Online (Sandbox Code Playgroud)
编辑2
@Jon Limjap - 好点,我正在考虑的事情......我确信有一个通用的方法可以用来确定类型是值还是引用类型..
这可以用于立即删除我不想处理的很多对象(但是你需要担心使用的结构,比如Size).有趣的问题不是吗?:)
这里是:
where T : struct
Run Code Online (Sandbox Code Playgroud)
取自MSDN.
我很好奇..可以使用扩展方法在.NET 3.x中完成吗?创建一个接口,并在扩展方法中实现接口(这可能比胖胖的开关更干净).此外,如果您稍后需要扩展到任何轻量级自定义类型,它们也可以实现相同的接口,而不需要对基本代码进行任何更改.
你们有什么感想?
可悲的消息是我在Framework 2中工作!! :d
编辑3
从Jon Limjaps Pointer开始,这非常简单.这么简单,我几乎想哭,但它很棒,因为代码就像一个魅力!
所以这就是我所做的(你会笑!):
bool TypeValid()
{ …Run Code Online (Sandbox Code Playgroud) 我需要创建一个数据传输对象,我将用它来存储从数据库中检索的记录.在这个数据传输对象中,我需要声明一个数字字段.对于哪个更好 - int或Integer
如果我将字段定义为Integer,如果我要从DB中检索超过2000条记录,是否会因"整数"类型而对性能产生影响!
提前致谢.
有人可以向我解释这里发生了什么:
char c = '+';
int i = (int)c;
System.out.println("i: " + i + " ch: " + Character.getNumericValue(c));
Run Code Online (Sandbox Code Playgroud)
这打印i: 43 ch:-1.这是否意味着我必须依靠原始转换来转换char为int?那么如何将a转换Character为Integer?
编辑:是的,如果它不是一个数值,我知道Character.getNumericValue返回-1,这对我有意义.问题是:为什么做原始转换会返回43?
Edit2: 43是ASCII for +,但我希望演员不会成功,就像getNumericValue没有成功一样.否则,这意味着有两种语义等价的方法来执行相同的操作,但结果不同?
我遇到了一个使用Integer变量的类来捕获要在for循环中使用的大小.这是一个好的做法还是我们应该使用int原始数据类型?
Integer size = something.getFields().size();
for (Integer j = 0; j < size - 1; ++j)
Run Code Online (Sandbox Code Playgroud) 这是一个过去的考试问题,我想知道什么是原始类型和参考类型?使用数组我知道引用类型是数组由对象或变量组成的位置,但是基本类型是用int或string创建数组的地方.(对?)
您认为您如何回答测试中的问题并获得良好的信誉?没有真正直接引用原始ARRAY类型......有没有办法在没有它的情况下做到这一点?或者你认为用阵列解释它会没问题.
这个问题基本上是不言自明的.我无法找到数组的API(除了这个数组,但这只是定义了一堆用于处理实际数组的静态辅助函数).如果没有它的类,这似乎表明一个数组不能是一个Object.
但是,一个数组具有公共字段length和它可以调用的方法这样的事实,.equals()并且.clone()似乎(非常强烈地)建议完全相反.
对于原始数组的奇怪表示和行为有什么解释?
作为一个注释,我试着在.clone()刚才的数组方法上使用"Open Implementation"Eclipse特性,希望我能够看看这个方法的定义位置和方法(因为它说int []覆盖了它对象),但它实际上导致我的整个Eclipse冻结并崩溃......
我可以通过在值上附加L来创建文字长度; 为什么我不能以某种类似的方式创建文字短或字节?为什么我需要使用带有强制转换的int文字?
如果答案是"因为C中没有短文字",那么为什么C中没有短文字?
这实际上并没有以任何有意义的方式影响我的生活; 写(短)0而不是0S或其他东西很容易.但这种不一致让我很好奇; 这是你晚上睡觉时困扰你的事情之一.有人在某个时候做出了一个设计决定,可以为某些原始类型输入文字,但不能为所有原始类型输入文字.为什么?
我需要在Java中进行一些反射方法调用.这些调用将包含具有基本类型(int,double等)的参数的方法.反向查找方法时指定此类型的方法是int.class,double.class等.
挑战在于我接受来自外部源的输入,该源将动态指定类型.因此,我还需要动态地提出这些类引用.想象一下分隔文件的方法名列表以及参数类型列表:
doSomething int double
doSomethingElse java.lang.String boolean
Run Code Online (Sandbox Code Playgroud)
如果输入类似java.lang.String,我知道我可以使用Class.forName("java.lang.String")该类实例.有没有办法使用该方法或其他方法来获取原始类型Classes?
编辑:
感谢所有受访者.很明显,没有内置的方法来干净地做我想要的事情,所以我将决定重用ClassUtilsSpring框架中的类.它似乎包含Class.forName()的替代品,可以满足我的要求.
我已经阅读了一些涉及XNA的教程(以及它的各种版本),我仍然对绘制基元有点困惑.一切似乎都很复杂.
有人可以使用代码向我展示最简单的XNA实现,即在屏幕上绘制一行或两行吗?也许有一个简短的解释(包括样板)?
我不是游戏程序员,我有很少的XNA经验.我的最终目标是在屏幕上绘制一些线条,我最终将通过旋转等方式(手动)进行转换.然而,对于这第一步......我需要简单画线!我记得在我古老的OpenGL时代,当用一些方法调用绘制一条线时,它是相当简单的.我应该简单地恢复使用非托管Directx呼叫吗?