Tag: types

通用集合类型测试

我想根据给定的集合类型(使用reflection)进行一些操作,而不管generics类型。 这是我的代码: void MyFct(Type a_type) { // Check if it’s type of List if (a_type.Name == “List`1”) { // Do stuff } // Check if it’s type of Dictionary else if (a_type.Name == “Dictionary`2”) { // Do stuff } } 它现在有效,但对我来说很明显,它不是最安全的解决方案。 void MyFct(Type a_type) { // Check if it’s type of List if (a_type == […]

嵌套类.GetType()

在弄乱嵌套类并将类型名称输出到控制台窗口时,我注意到了一些奇怪的事情。 我想知道是否有人可以为我解释一下。 在主类上调用GetType()时,它返回我期望的内容,即相关名称空间后面的类的名称。 即Namespace.Namespace.Classname 但是,当我从封闭类中调用一个函数来返回嵌套类的类型时,我得到返回的值,如下所示: Namespace.Namespace.ClassNameEnclosing + ClassNameNested. 为什么它不是简单地以点符号返回。 为何选择+符号? 我只是好奇在后台发生了什么导致这种表示法。

没有汇编信息的generics类型的FullName?

我有一个数据库表,我存储窗口的高度,宽度,状态等。 作为窗口的标识符,我使用表单的完整类型名称。 它运作良好,但我发现一些通用的表单会获得非常长的名称。 原因是generics类型列出了完整的汇编信息。 有没有办法跳过它? 例如,常规表单的全名如下所示: Some.Name.Space.NameOfForm 但是通用表单的全名如下所示: Some.Name.Space.NameOfForm`1[[Some.Other.Name.Space.GenericType, AssemblyName, Version=1.0.2.0, Cuntulre=neutral, PublicKeyToken=null]] 为什么这么久? 有没有办法可以获得更短的版本? 例如: Some.Name.Space.NameOfForm`1[[Some.Other.Name.Space.GenericType]] 有什么线索吗?

值类型与参考类型的实例化和初始化

int number = new int(); 问题: 对于引用类型, new运算符通过在堆上分配内存来创建该类型的实例,然后通过调用类型的构造函数对其进行初始化。 如上所示,您可以对值类型执行相同操作。 对我来说,上面的行意味着调用构造函数int()以使用值初始化数字 。 我已经读过int是一个指向struct System.Int32的关键字。 因此,在Visual Studio中,我导航到结构Int32。 瞧,没有构造函数存在。 如果没有构造函数,这个预定义类型究竟是如何初始化为0的? 与上面相关,Int32结构中是否有一个存储值的字段? 对于自定义结构和类,我都可以使用new关键字创建新实例,而实际上不包含构造函数的结构或类。 在这种情况下,是否在struct / class包含的所有字段中都没有进行初始化? 唯一的事情就是在堆/堆上为值/引用类型分配内存? 最后,对于值类型,实例化和初始化不需要新的关键字。 这究竟是如何在较低级别上工作的? 假设我们做int number = 5; 。 它以某种方式转换为int a = new int(); a = 5; ? 如果是这样,怎么样? 太感谢了!

C#中的值类型类定义?

是否可以创建一个不是结构但是值类型的类,或者类似于值类型,因为它在传递时复制而不是通过引用传递。 编辑: 很抱歉在被问到后需要编辑的问题。 另外,请参阅此问题以获取更多信息。 在不存在的结构布局中循环

如何在整数数据类型变量中将sql参数作为空值传递?

如何将sql参数作为空值传递给整数数据类型变量? StockBO sBO = new StockBO(); sBO.Mode = 2; if (ddcmpanyname.SelectedIndex != 0) { sBO.Client_id = Convert.ToInt16(ddcmpanyname.SelectedValue); } else { sBO.Client_id = Convert.ToInt16(DBNull.Value);//Object cannot be cast from DBNull to other types. sBO.Client_id =DBNull.Value;//Cannot implicitly convert type } ds=_StockController.StockGet(sBO); 我改变了这样的代码它给出了错误,就像我的评论检查其他部分

为什么List 没有实现IOrderedEnumerable ?

我想使用有序的枚举,并使用接口作为返回类型而不是具体类型。 我需要返回一组有序的对象。 但是,当使用IList实现时, 我无法返回IOrderedEnumerable ,因为IList不会inheritanceIOrderedEnumerable 。 在下面的示例中,我有一个带有系列存储库的视图模型,实现为List的系列对象,它们位于List ,并且是有序的。 我是一个访问器方法,我想返回一个系列的过滤集,其中只返回特定类型的系列对象,同时保持过滤元素之间的原始顺序。 /// /// Represents the view model for this module. /// public class ViewModel : AbstractViewModel { /// /// Gets the series repository. /// /// The series repository. public IList SeriesRepository { get; private set; } //… } //8<—————————– /// /// Gets the series of the specified […]

在Visual Studio中将“var”转换为显式类型?

可能重复: 将C#var重构为显式类型的工具 Visual Studio是否有任何类型的快捷方式(快捷方式意味着写出实际的类型名称),允许您编写“var”并将其转换为实际的类型名称? 例如: var x = new Dictionary(); ::做神奇的事情:: Dictionary x = new Dictionary(); 编辑 – 对所有问题的仇恨:我问,因为我想要在我的解决方案中找到对特定类型的所有引用。 Vars不会出现在该搜索中。

为什么我不能在对象初始化期间使用部分限定的命名空间?

我怀疑这是一个以前被问过多次的问题,但我还没找到。 如果我不经常在文件中使用该类型,或者我using namaspacename文件顶部的using namaspacename添加以便能够编写new ClassName()我通常使用完全限定的命名空间。 但是如果只添加了完整命名空间的一部分呢? 为什么编译器找不到类型并抛出错误? 考虑嵌套命名空间中的以下类: namespace ns_1 { namespace ns_1_1 { public class Foo { } } } 因此,如果我现在想要初始化此类的实例,它可以通过以下方式工作: using ns_1.ns_1_1; public class Program { public Program() { // works, fully qualified namespace: var foo = new ns_1.ns_1_1.Foo(); // works, because of using ns_1.ns_1_1: foo = new Foo(); } } 但是以下不起作用: using […]

为什么Int32最大值是0x7FFFFFFF?

我在MSDN文档中看到Int32的2,147,483,647是2,147,483,647 ,hex0x7FFFFFFF 。 http://msdn.microsoft.com/en-us/library/system.int32.maxvalue.aspx 我想,如果它是Int32它应该存储32位整数值,最后应该是4,294,967,295和hex0xFFFFFFFF 。 我的问题是为什么Int32存储31位整数值?