Tag: 类型

C#动态类型问题

我只是遇到了最奇怪的事情,我有点心思=此刻… 下面的程序编译得很好,但是当你运行它时,当你尝试读取Value时会得到一个RuntimeBinderException 。 ‘object’ does not contain a definition for ‘Value’ class Program { interface IContainer { int Value { get; } } class Factory { class Empty : IContainer { public int Value { get { return 0; } } } static IContainer nullObj = new Empty(); public IContainer GetContainer() { return nullObj; } […]

在C#中对十进制数据类型执行数学运算?

我想知道上述情况是否完全可能。 例如: Math.Sqrt(myVariableHere); 在查看重载时,它需要一个double参数,所以我不确定是否有另一种方法可以使用decimal数据类型复制它。

C# – 通过reflection获取简单类型的用户友好名称?

Type t = typeof(bool); string typeName = t.Name; 在这个简单的示例中, typeName的值为”Boolean” 。 我想知道是否/如何让它说”bool”而不是。 对于int / Int32,double / Double,string / String也是如此。

如何找到两种类型之间最佳拟合的最小协变类型?

IsAssignableFrom方法返回一个布尔值,指示是否可以从另一个类型分配一个类型。 我们怎样才能测试它们是否可以相互分配,还能知道最小协变类型以获得最佳拟合? 考虑以下示例(C#4.0) 码 // method body of Func is irrelevant, use default() instead Func x = default(Func); Func y = default(Func); Func f = default(Func); Func g = default(Func); g=x; g=y; y=x; // won’t compile x=y; // won’t compile // following two are okay; Array is the type for the covariance f=x; // Array […]

确定类型是否为静态

假设我有一个叫做type 。 我想确定我是否可以使用我的类型执行此操作(实际上不对每种类型执行此操作): 如果type是System.Windows.Point那么我可以这样做: Point point1 = new Point(); 但是,如果type是System.Environment那么这将不会飞: Environment environment1 = new Environment(); //wrong 因此,如果我遍历程序集中的每个可见类型,如何跳过将无法创建第二个实例的所有类型? 我对反思很陌生,所以我的术语还不是很好。 希望我在这里尝试做的很清楚。

在using语句中使用各种类型(C#)

因为C#using语句只是try / finally {dispose}的语法糖,为什么它只接受多个对象,如果它们属于同一类型? 我不明白,因为他们需要的只是IDisposable。 如果所有这些都实现了IDisposable,它应该没问题,但事实并非如此。 具体来说,我习惯写作 using (var cmd = new SqlCommand()) { using (cmd.Connection) { // code } } 我压缩成: using (var cmd = new SqlCommand()) using (cmd.Connection) { // code } 我想进一步说明: using(var cmd = new SqlCommand(), var con = cmd.Connection) { // code } 但我不能。 有人会说,我可能会写: using((var cmd = new SqlCommand()).Connection) […]

动态vs对象类型

我可以互换地使用动态和对象类型。 这两种类型有什么区别吗? 使用一个比另一个有任何性能影响吗? 哪一个更灵活?

获取声明为动态的对象的Type

我想得到一个动态对象的类型,如: dynamic tmp = Activator.CreateInstance(assembly, nmspace + “.” + typeName); Type unknown = tmp.GetType(); 除了上面的内容之外,GetType()返回动态对象的包装类型,而不是包装对象的类型。 谢谢!

字符串到C#中的二进制

我有一个函数将字符串转换为hex,因此, public static string ConvertToHex(string asciiString) { string hex = “”; foreach (char c in asciiString) { int tmp = c; hex += String.Format(“{0:x2}”, (uint)System.Convert.ToUInt32(tmp.ToString())); } return hex; } 你能帮我把另一个字符串写成基于我的样本函数的二进制函数吗? public static string ConvertToBin(string asciiString) { string bin = “”; foreach (char c in asciiString) { int tmp = c; bin += String.Format(“{0:x2}”, (uint)System.Convert.????(tmp.ToString())); } […]

为什么不能将Double隐式强制转换为Decimal

我不理解十进制和双精度的转换规则。 这样做是合法的 decimal dec = 10; double doub = (double) dec; 然而令我困惑的是,十进制是一个16字节的数据类型,double是8个字节,因此不会将一个双倍的十进制数转换为加宽的对话,因此应该隐式允许; 以上例子不允许?