Tag: generics

无法在通用字典中找到关键字

我无法通过密钥找到字典条目。 我有一个如下界面: public interface IFieldLookup { string FileName { get; set; } string FieldName { get; set; } } 然后我有一个这样的字典: Dictionary fd 当我尝试通过键从字典中检索元素时,我得到一个KeyNotFoundException。 我假设我必须实现某种类型的比较 – 如果我的假设是正确的,那么在这种情况下实施比较的推荐方法是什么?

是否可以更改基本数据类型的默认值?

我最近创建了一个通用的Matrix 类,它充当List <List >集合的包装器。 据我所知,这堂课工作得很好。 关于T的默认值,我遇到了一个小问题。 我创建了一个Matrix (3,3)的实例,它创建了一个3×3的整数矩阵,默认使用默认值(T)默认为0。 我知道值类型(包括基元)默认为0等效,引用类型默认为null。 我想知道是否可以更改此默认值,以便如果将值类型传递到Matrix,它将填充5,例如,而不是0。 我尝试创建自己的struct(值类型),但由于无法在结构体中使用无参数构造函数,我找不到从0更改默认值的方法。 我怀疑更改默认值是不可能的,并且我必须在实例化后逐个单元地循环遍历Matrix,但我想在这里询问以防万一。

如何为表单控件创建模板函数?

此语句将更改表单对象的位置。 lblMessage.Location = new Point(0,0); 我想编写一个可以定位任何表单对象的通用模板函数 。 我想出了这个,但它无效: public void ChangePosition(T form_object) { form_object.Location = new Point(0,0); } 我称之为: ChangePosition(lblMessage); 错误:’T’不包含’Location’的定义,也没有扩展方法’Location’接受类型’T’的第一个参数(你是否缺少using指令或汇编引用?) 我是否需要在模板function上提及某种界面? 如何在generics类型上调用扩展方法?

generics方法重载的问题

我有以下方法: void s(int a, tb) { … .. . } void s(int a, int b) { … .. . } void s(int a, long b) { … .. . } 当我想用它作为s(10,10)我在工具提示中看到了这些覆盖。 s(int a,int b); 和 s(int a,long b); 。 但是,我想我必须看到s(int a,long b); 。 怎么了 ? 我有visual studio 2008 sp1 。 谢谢 更新:我在Visual Studio 2010中测试过它。结果是一样的。 更新:它似乎是关于c#而不是visual […]

表达式<Func >到表达式<Func >的通用拆箱

正如标题中所提到的,我有一个表达式,其中结果类型被“存储”在一个object ,该object可以是我的所有域类。 有没有办法得到具体的表达(拆箱)?

List 的自定义排序

我有一个List ,其中T是我的Event类型,其字段time类型为long 。 此列表从Web服务填充,如果事件没有时间,则值设置为0。 我想要做的是按时间按升序排序我的列表,但是在最底部放置时间= 0的项目。 目前我正以一种时尚的方式实现这一目标,我想学习更好的方法。 var events = new ObservableCollection(); var resp = JsonConvert.DeserializeObject(restResponse.Content).Items; var notime = resp.Where(r => r.time == 0); var yestime = resp.Where(r => r.time > 0); yestime.ToList().ForEach(events.Add); notime.ToList().ForEach(events.Add); CallbackInternal(callback, events); 我试图实现一个自定义的IComparer ,但是效果并不好(这里只有一次) public class EventComparer : IComparer { public int Compare(Event x, Event y) { if (x.time == 0) […]

按值检索自定义枚举类的正确方法是什么?

我在我的域模型中创建了自己的自定义伪枚举,以允许我有一些更详细的值。 例如,我的课程如下: public abstract class Enumeration : IComparable where X : IComparable { public Enumeration(X value, Y displayName) { } public Y DisplayName { get { return _displayName; } } public X Value { get { return _value; } } } 并且inheritance它的类将是: public class JobType : Enumeration { public static JobType ChangeOver = new JobType(“XY01”, […]

C#中的Cast ()或List 中的是什么

我知道这可能是一个骗局,但我不能为我的生活记住这个名字是什么,甚至是如何查找它。 我知道T会是你要投射的类型,但它的技术名称是什么。 编辑这是一个链接,了解有关generics的更多信息 为什么C#和VB有generics? 他们提供了什么好处? generics,FTW

为什么Dictionary <T1,List >不能转换为Dictionary <T1,IEnumerable >?

我想知道为什么我不能只是演员(我有一个模糊的想法,这可能与那个共同/逆转的东西有关?),我被迫将第一个字典的元素复制到新的字典中得到我想要的类型?

更新两个常用函数以使用generics

如果需要在另一个项目中测试非公共属性,则使用Microsoftunit testing向导创建Accessor对象。 在我的unit testing中,我创建了辅助函数,这样我就不会在每个unit testing方法中重复相同的代码。 目前我有两个几乎相同的测试,除了一个采用标准对象,另一个采用Accessor版本。 由于Accessor基于标准版本,我应该能够拥有一个函数,我认为我应该能够使用generics来完成。 问题是尝试重新输入和编译失败。 以下是现有的两个function: // Common function to create a new test record with standard Account object internal static void CreateAccount(out Account account, bool saveToDatabase) { DateTime created = DateTime.Now; string createdBy = _testUserName; account = new Account(created, createdBy); account.Notes = Utilities.RandomString(1000); if (saveToDatabase) account.Create(); } // Common function to […]