【c# – 使用’is’,其中类型是在运行时定义的】教程文章相关的互联网学习教程文章

接收List的C#泛型方法不会为实际类型的T调用重载方法(更喜欢通用类型)【代码】

参见英文答案 > why is this generic not resolved at compile time? 4个我有这个例子C#代码:class Stuff { } // empty classvoid Main() {var list = new List<Stuff> {new Stuff(),new Stuff()};Fun(list); }void Fun<T>(List<T> a) {Debug.Log("called List<T> Fun");foreach (T t in a) {Fun(t);} }void Fun(Stuff a) {Debug.Log("called Stuff Fun"); }void Fun<T>(T a) {Debug.Log("ca...

C#匿名类型【代码】

当我说匿名类型声明var someType = new { Name = “JonSkeet”, Age = 10 };然而关键字var is implicitly typed但是当我打印Response.Write(someType.GetType().Name);它产生<> f__AnonymousType02.这个符号是什么<>涉及到?解决方法:编译器为您的匿名类型生成一个常规类,并选择一个在IL中有效但在C#中没有的名称,以防止名称与您的类型名称冲突.

c# – 如何知道Type是否继承了其他类型?【代码】

怎么知道Type是否继承了其他类型?Type t; // i get the t from somewhere bool b = t.IsInhertitedFrom(typeof(BaseType));解决方法:bool b = t.IsSubclassOf(typeof(BaseType)) 并检查类型是否实现接口使用: bool b = t.GetInterface(typeof(IMyInterface).FullName)!= null

MVC 2与VS 2010视图构建错误:功能’匿名类型’不能使用,因为它不是ISO-2 C#语言规范的一部分【代码】

我有一个共享项目,我存储了所有自定义的EditTemplates和DisplayTemplates.这是一个常规的C#类库项目,其视图都标记为嵌入式资源.该项目的目标框架是“.Net Framework 4”. 在/ Views /文件夹中我已经包含了这个web.config文件,因此在使用.aspx和.ascx文件时我获得了MVC 2 intellisense:<?xml version="1.0"?> <configuration><system.web><httpHandlers><add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/></httpHand...

c# – 可空值的类型只是常规值类型的包装吗?【代码】

我问的原因是你可以使用Value属性将可空类型强制转换为常规类型.这让我觉得常规类型只是包含在可空类型中.解决方法:是的,它是一个通用的结构:public struct Nullable<T> where T : struct, new()如果你只看到T,这可能会更令人困惑吗?语法 – 但这只是syntactic sugar,编译器正在将其更改为Nullable< T>. 资料来源:http://msdn.microsoft.com/en-us/library/b3h38hb0.aspx,http://msdn.microsoft.com/en-us/library/1t3y8s4s.asp...

c# – 泛型类型的奇怪行为【代码】

请看下面的简单代码public class A{}public class B: A{}public class G<T> where T : A{public T GetT(){return new A();}}此代码不正确 – 编译器错误“无法将A转换为返回类型T”.但A实际上是T.如果我改变了return new A(); 至return new A() as T;一切都好.这种行为的原因是什么?提前致谢 UPD:初始问题出错.现在修好了解决方法:根据更新重新设计的答案 虽然A符合T:A的通用约束,但它是一种具体类型.但是,您的泛型类的GetT()方...

c# – 无法将’MessageBodyStream’类型的对象强制转换为’System.IO.MemoryStream’

我从我的wcf服务器返回一个Stream形式的内存流.当我在客户端中检索它并将其转发回MemoryStream时,我收到此错误. 我不明白MessageBodyStream来自哪里,因为我从未使用过它.有人请告诉我这个问题的解决方案吗? 谢谢.解决方法:This post建议,如果要将其作为MemoryStream访问,则需要首先将此流读入MemoryStream.因为any stream you send is received as MessageBodyStream.

c# – 检测可空类型【代码】

当它为空时,是否可以检测到Nullable类型(强制转换为对象)? 由于Nullable< T>我认为这应该是可能的结构.double? d = null; var s = GetValue(d); //I want this to return "0" rather than ""public string GetValue(object o) {if(o is double? && !((double?)o).HasValue) //Not working with nullreturn "0";if(o == null)return "";return o.ToString(); } 解决方法:http://msdn.microsoft.com/en-us/library/ms228597(v=vs.8...

c# – 类型参数约束是一个类【代码】

我注意到其他开发人员使用这种技术,但它总是让我困惑.我今天早上决定进行调查,并在MSDN上发现了以下内容(从http://msdn.microsoft.com/en-us/library/d5x73970(v=vs.100).aspx开始):public class GenericList<T> where T : Employee { ... }为什么我们要使用此方法而不是在类中用Employee替换T的所有实例?对我来说,这似乎是可维护性的胜利.我可以理解限制接口作为包含来自不同继承层次结构的类的方法,但是继承已经以更明显的方式...

c# – 参数字典包含非可空类型参数“id”的空条目【代码】

我正在尝试通过默认路由中的id参数从我的数据库中检索数据:routes.MapRoute("Default", // Route name"{controller}/{action}/{id}", // URL with parametersnew { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults);在这个ActionResult中,我试图基于route id参数呈现自定义用户控件,以便检索所请求页面的相关数据public ActionResult InitPageNav(int id) {PageModel page = PageNav...

C#类型名称而不是CLR类型名称【代码】

typeof(int).Name返回System.Int32会不会有人知道返回“int”的方法解决方法:没有很多类型是C#关键字(int,double,string)…所以也许你可以编写自己的映射函数,从系统类型名称到相应的C#关键字.

c# – System.Drawing.Point是一个值类型.为什么?

我读到System.Drawing.Point是一个值类型.我不明白.为什么?解决方法:微软试图遵循这些规则,他们在MSDN中解释得很好,见Choosing Between Classes and Structures(The book更好,因为它有很多有趣的评论) 即使Point不是这样的好例子: > Struct应逻辑上表示单个值(在这种情况下是一个位置,即使它有2个组件,但复数也可以分为2个部分,它们是结构的主要候选者)> Struct的实例大小应小于16个字节. (好的,24 = 8)>不应经常将结构框装入. (...

c# – 使用引用类型的值作为字典键必须做什么?

假设我有一个T类我想用作词典中的键< T,U>采集. 我必须在T中实现什么才能使这些键基于T而不是T引用的值? 我希望它只是GetHashCode().解决方法:您必须实现GetHashCode()和Equals(). 字典是封面下的Hashtable,因此您可能需要阅读:Pitfalls Of Equals/GetHashCode – How Does A Hash Table Work?

c# – 获取具有给定返回类型的所有方法【代码】

这段代码错了吗?它只是没有返回任何东西:public IEnumerable<string> GetMethodsOfReturnType(Type cls, Type ret) {var methods = cls.GetMethods(BindingFlags.NonPublic);var retMethods = methods.Where(m => m.ReturnType.IsSubclassOf(ret)).Select(m => m.Name);return retMethods; }它返回一个空的枚举器. 注意:我在ASP.NET MVC Controller上调用它来寻找ActionResultsGetMethodsOfReturnType(typeof(ProductsControlle...

c# – 请帮助解决此错误:运算符’^’不能应用于’double’和’int’类型的操作数【代码】

我有以下C#代码.double a = 0;double d = 0; double er = 0; int N = numbers.Length; a=(N*N/6) + N d=(N-(N/2))*2for(int aa=1;aa<=data.length;aa++){er=((10-aa)*(-a\) + d - (numbers[aa,12]))^2;}数字是这种格式的双数组:1 0.3232 0.361 0.5214 0.233 -0.7678 2 0.3451 0.321 0.134 0.224 -0.706268 3 0.3123 0.351 0.155 0.523 -0.70626 4 0.36 0.312 0.216 0.233 -0.6453351 5 0.269 0.3331 0.162 0.224 -0.584962但是在运...