Tag: generics

我应该在什么时候使用它们的函数

我似乎无法绕过他们。 据我所知,它是动态地向类添加逻辑。 框架内的课程是否为此准备好了? 我为什么要扩展类并在扩展中添加它的function。 我将在全球范围内访问,并且更容易维护。 我读过有4种函子类型: 比较器 关闭 谓语 变压器 我们应该处理它们中的每一个。 ps在vb中有类似的东西吗? 所以我可以说我认为lambda表达式是仿函数。 这为我清理了一些东西:)(呵呵) Lambda表达式是算子吗? 匿名函数是函子吗? 但我问了这个问题,因为我遇到了另一种类型的fucntors,即这些: delegate void FunctorDelegate(int value); class Addition { FunctorDelegate _delegate; public Addition AddDelegate(FunctorDelegate deleg) { _delegate += deleg; return this; } public int AddAllElements(IList list) { int runningTotal = 0; foreach( int value in list) { runningTotal += value; […]

C#generics:通配符

我是c#世界的新手,我正试图围绕仿制药。 这是我目前的问题: public Interface IAnimal{ string getType(); } public Interface IAnimalGroomer where T:IAnimal{ void groom(T); } 现在我想要一本包含这些动物美容师的字典。 我怎么做? 在java中,我可以这样做: HashMap<String,IAnimalGroomer> groomers = new HashMap(); 编辑:这是我正在尝试做的一个例子: public class Dog : IAnimal { public string GetType() { return “DOG”; } public void ClipNails() { } } public class DogGroomer : IAnimalGroomer { public void Groom(Dog dog) { […]

什么是C#中的通用集合?

我正在尝试构建我的第一个通用列表并遇到了一些问题。 我理解声明看起来像“ List ”,我using System.Collections.Generic; 在我的页面顶部。 但是,Visual Studio无法识别T变量。 我错过了什么?

更好地理解C#generics

我使用C#generics查看了一些示例代码。 我为什么以及何时使用它们? 所有的例子都很复杂。 我需要一个简单明了的例子,让我开始使用C#generics。

C#:声明和使用不同类型的generics类列表,如何?

具有以下generics类,其中包含string, int, float, long作为类型: public class MyData { private T _data; public MyData (T value) { _data = value; } public T Data { get { return _data; } } } 我想获得一个MyData的列表,其中每个项目将是不同的T 我希望能够从列表中访问项目并获取其值,如下面的代码所示: MyData myData = _myList[0]; // Could be , , … SomeMethod (myData.Data); 其中SomeMethod()声明如下: public void SomeMethod (string value); public void SomeMethod (int […]

C#接口静态方法调用generics

有没有一种简单的方法来实现它,如果可能的话,不需要实例化对象: interface I { static string GetClassName(); } public class Helper { static void PrintClassName() where T : I { Console.WriteLine(T.GetClassName()); } }

一般的单身人士

对于一般的单身人士,你们对此有何看法? using System; using System.Reflection; // Use like this /* public class Highlander : Singleton { private Highlander() { Console.WriteLine(“There can be only one…”); } } */ public class Singleton where T : class { private static T instance; private static object initLock = new object(); public static T GetInstance() { if (instance == null) […]

Protobuf属性具有generics类的层次结构

我有一个类似于此的类层次结构。 这些类包含我已排除的许多其他细节。 这是一个简化,专注于这些类的序列化方面。 [ProtoInclude(1, typeof(Query))] [ProtoInclude(2, typeof(Query))] [ProtoInclude(3, typeof(Query))] [ProtoInclude(4, typeof(Query))] [ProtoInclude(5, typeof(Query))] abstract class Query { public string Result { get; set; } } [ProtoInclude(1, typeof(SpecialQuery)] abstract class Query : Query { public new T Result { get; set; } } abstract class SpecialQuery : Query { public new string Result { get; set; […]

C#Generic传递具有相同属性的不同对象

我不确定我所做的事情是否可行。 我有2种方法。 2种方法的主体完全相同,但参数和返回方法的签名都不同。 传入的参数的属性已更改,对象不同但具有相同的属性名称(它们是两个不同的entity framework实体)。 从基础对象inheritance是不可能的(我认为)因为这些是entity framework实体。 最好展示示例,然后谈谈它.. 方法1 private static IQueryable ApplyMapFilterToListings(IQueryable listings, ListingSearchCriteria criteria, bool boolIsPremiumListingsOnly = false) { //setting properties of listings (of type MapListing Entity) } 方法2 private static IQueryable ApplyFilterToListings(IQueryable listings, ListingSearchCriteria criteria, bool boolIsPremiumListingsOnly = false) { //setting properties of listings (of type vListing Entity) } 一般来说,我不介意函数体是否完全相同,但是在这种情况下,很多属性都是有条件设置的,我想让这些方法完全相同,并且certificate它们不同步。 我还在退回IQueryable 的原因是因为我在返回后做了其他的事情

在C#中使用嵌套的通用类时的inheritance问题

我正在尝试创建一个类层次结构,以便我可以: SpecificScreenController <ScreenController <Singleton 到目前为止,我将这些设置为: public abstract class Singleton : MonoBehaviour where T : MonoBehaviour { private static T _instance; public static T Instance{ get{… return _instance;} } } public abstract class ScreenController : Singleton where T : MonoBehaviour { public GAME_SCREEN GameScreen; //many more ScreenController common properties/fields/methods } public class SpecificScreenController : ScreenController { […]