Tag: 类型转换

从`NSDecimal`或`NSDecimalNumber`转换为C#的`decimal`类型

我从StoreKit的SKProduct类得到了一个NSDecimalNumber ,我想将它转换为C#的decimal类型,以最大限度地减少精度损失。 有没有直接的方法来做这样的事情? 我认为我的两个选择是: 假设我理解每个的二进制实现并执行我自己的逐位转换,或者 让NSDecimalNumber给我一个字符串,然后有decimal解析它。 我认为选项1是太多的工作,甚至可能是脆弱的,所以我倾向于使用选项2.但这似乎不是我能做的最好的。 (我可以忍受它的速度有多慢,因为它极少发生。

C#中的条件运算符和返回类型

可能重复: 为什么null需要显式类型转换? 可空类型和三元运算符。 为什么这不起作用? 试图执行以下操作: sqlCmd.Parameters.Add(“@DateCreated”, System.Data.SqlDbType.DateTime).Value = myObject.DateCreated == DateTime.MinValue ? DBNull.Value : myObject.DateCreated; 我收到此错误: 无法确定条件表达式的类型,因为’System.DBNull’和’System.DateTime’之间没有隐式转换 我很明白这个错误,但为什么类型甚至是什么,因为Parameters.Value属于对象类型? 有没有办法完成我想要做的事情?

C#隐式转换运算符,是/作为运算符

我正在创建一个复合对象,我希望能够在其中一个包装对象可以使用的任何地方使用它。 因此给出以下对象: public class Foo{} public class FooWrapper{ private Foo _foo = new Foo(); public static implicit operator Foo(FooWrapper wrapper) { return wrapper._foo; } } 我想通过以下测试: public class ConversionTests { private FooWrapper _uat = new FooWrapper(); [Test] public void Can_Use_Is_Operator() { Assert.IsTrue(_uat is Foo); } [Test] public void Can_Use_As_Operator() { Assert.IsTrue(null != _uat as Foo); […]

无法将源类型转换为目标类型编译错误

我有这个简单的课程 public class Program { private static void Main(string[] args) { ClassB objA = new ClassB(); ClassB<ITestA> objB = new ClassB(); } } public class ClassB { ///some code here } public interface ITestA { ///some code here } public class MyDTO { ///some code here } public class ClassA : ITestA { ///some code […]

使用LINQ时,“输入字符串的格式不正确”

我试图对对象集执行FirstOrDefault()查询并抛出一个奇怪的exception: 我的代码: private RecordObject GetRecordByID(int recID) { return _objectSet.FirstOrDefault(rec => rec.ID == recID); } 例外消息: 输入字符串的格式不正确 InnerException为null。 堆栈跟踪: at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal) at System.Number.ParseDecimal(String value, NumberStyles options, NumberFormatInfo numfmt) at System.Convert.ToDecimal(String value, IFormatProvider provider) at System.String.System.IConvertible.ToDecimal(IFormatProvider provider) at System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider) at Oracle.DataAccess.Client.OracleDataReader.ChangeType(Object sourceValue, Type […]

C#如何将System.Net.ConnectStream转换为byte (数组)

我试图将流(System.Net.ConnectStream)转换为字节数组。 关于如何做到这一点的任何想法/例子?

使用“Convert.ChangeType()”将System.String一般转换为任何复杂类型

我尝试将用户输入一般转换为简单或复杂类型: class Program { static void Main(string[] args) { Console.WriteLine(“Welcome, please provide the following info… Confirm with !”); Console.WriteLine(); Console.Write(“Name (eg ‘Peggy Sue’): “); var user = GetUserInput(Console.ReadLine()); Console.WriteLine(); Console.WriteLine(); Console.WriteLine(“Hi {0}, nice to meet you!”, user.Forename); Console.WriteLine(); Console.Write(“Age: “); user.Age = GetUserInput(Console.ReadLine()); Console.WriteLine(); Console.WriteLine(“Thanks and goodbye!”); Console.WriteLine(“Press to quit…”); Console.ReadLine(); } static T GetUserInput(string […]

C#将字符串转换为double / decimal并返回字符串,保留尾随零,为数千添加coma

我试图获取用户输入,解析它然后用String.Format()显示,用comas格式化数千。 So, if user provides 1000 I will display 1,000 1000.00 => 1,000.00 1000.0 => 1,000.0 1,000.5 => 1,000.5 基本上我想保留所提供的所有小数(包括尾随零),只需添加数千的格式。 我试过了: String.Format(“{0:#,0.######}” , Decimal.Parse(input)); String.Format(“{0:#,0.######}” , Double.Parse(input);

属性网格项和DoubleClick

我正在使用PropertyGrid控件来编辑应用程序中的某些对象。 我正在使用自定义TypeConverters和TypeEditors来获得更好的用户界面。 我对自定义TypeConverter的布尔属性有问题。 如果我有这个课程: public class MyClass { public string Name { get; set; } [System.ComponentModel.TypeConverter( typeof( BoolTypeConverter ) )] public bool Flag { get; set; } } 然后我在PropertyGrid中创建实例并将其设置为SelectedObject – 一切正常,直到用户在属性网格项上格式化“Flag”属性。 在DoubleClick发出此消息后: alt text http://tcks.wz.cz/property_grid_error.PNG TypeConverter类看起来: public class BoolTypeConverter : System.ComponentModel.TypeConverter { public const string TEXT_TRUE = “On”; public const string TEXT_FALSE = “Off”; public […]

C#动态通用列表

我想创建一个通用的List ,其类型在运行时声明。 我可以做到以下几点,但由于它是动态的,我怀疑存在速度惩罚。 我正在为异国情调的数据库编写一个包装器,因此速度至关重要。 List gdb = new List() 我在动态generics类型中阅读了这篇文章 ,但无法让它发挥作用。 具体来说,该对象不会显示为List,因此没有添加方法。 Type ac; switch (trail[dataPos].Type) { case GlobalsSubscriptTypes.Int32: ac = typeof(System.Int32); break; case GlobalsSubscriptTypes.Int64: ac = typeof(System.Int64); break; default: ac = typeof(System.String); break; } var genericListType = typeof(List); var specificListType = genericListType.MakeGenericType(ac); var gdb = Activator.CreateInstance(specificListType); 如何让gdb显示为以下之一: List List List