c#如何在项目中声明一个静态的List对象?(给出思路即可)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c#如何在项目中声明一个静态的List对象?(给出思路即可)相关的知识,希望对你有一定的参考价值。
不一定是一个list对象,但一定是一个引用对象而不是值类型。我尝试过声明静态类,但是静态类里面声明的静态对象,即使在静态类里面,我都不能对这个List做操作 。。
不知道我的意思有没有表述清楚
或者是你再用一个实例(instance)去尝试调用静态对象?
例如:
public static class Test
public static IList<int> iList = new List<int>(100);
public static void MethodA()
// coding...
iList.Add(0); // 这样是可以的。静态方法中访问静态成员
public void MethodB()
// coding...
MethodA(); // 这样是【错误】的。在非静态方法里尝试访问静态成员
iList.Add(1); // 这样是【错误】的。道理一样
public class TryGo
public void Go()
Test.MethodA(); // 这样可以访问,通过类名直接访问静态方法
Test.iList.Add(2); // 这样可以访问,通过类名访问静态属性
Test t = new Test();
t.MethodB(); // 这样可以访问,通过实例访问非静态成员
t.MethodA(); // 这样是【错误】的,实例不能访问静态成员
t.iList.Add(3); // 这样是【错误】的,实例不能访问静态成员
参考技术A 对于静态对象,需要在静态构造函数里面初始化。 参考技术B 厄。。。不可能把。。。
随便在一个类里面声明 static list<>不就行了? 当然要注意你的类 和 你的变量的 作用域 参考技术C 你想做什么操作说来看看.
删除项目在列表 C# 中具有相同的键 [重复]
【中文标题】删除项目在列表 C# 中具有相同的键 [重复]【英文标题】:Remove Item have same key in List C# [duplicate] 【发布时间】:2013-04-05 08:33:30 【问题描述】:我有一个List<Object>
n Objects
。
在 n 个对象中,有一些对象具有相同的 Id
。
示例List<T> = t1, t2, t3, t4, t5....,t10.
假设:
t1.Id = t5.id
所以我想从 List
中删除 t5
。
谁能帮帮我。
在这个问题中:using LINQ to remove objects within a List 你知道对象重复(例如:“bob”),但在我的问题中,在这个列表中,我不知道之前有任何对象重复。
【问题讨论】:
您是否尝试过任何方法来解决您的问题?首先展示你的努力.. 您可能想查看System.Collections.Generic.Dictionary
class,除非您的家庭作业/作业绝对需要您使用List
。
我是 LINQ 新手。我尝试使用 2 for 循环,但此解决方案未优化。
如果您需要最佳解决方案:此类问题最好使用Dictionary
解决(如上所述)。 Dictionary
不允许您使用相同的键添加多个数据,并且查找键的速度非常快。
【参考方案1】:
仅使用 LINQ to Objects:
source = source.GroupBy(t => t.id).Select(g => g.First()).ToList();
【讨论】:
+1 来自我。也正确,如果你不够懒惰使用现有的实现) @lazyberezovsky 我认为只为一个DistinctBy
调用加载整个moreLinq
assemble 可能有点过头了。这就是为什么我首先发布了 LINQ to Objects 的答案。
哇。你是对的,没有 Distinct(谓词)。当然应该有。我认为有的原因当然是因为我创建了自己的 :D go figure。【参考方案2】:
你可以使用moreLinq(从NuGet获取)扩展DistinctBy
var result = list.DistinctBy(x => x.Id).ToList();
【讨论】:
投反对票的原因是什么? 我没有投反对票,但Distinct
没有理由选择第一个,因为它是使用哈希集或类似方法实现的。既然他特意要求删除t5
,你需要保证。无论如何,这是我最初的反应。不知道这就是你被否决的原因。
实际上,DistinctBy
并非如此。也许这不是当时投反对票的原因。
@LasseV.Karlsen DistnctBy 描述为If a key is seen multiple times, only the first element with that key is returned.
@LasseV.Karlsen 你可以看看DistinctBy
implementation,你会看到它会返回第一个。【参考方案3】:
试试这个:
list.RemoveAll(input => list.Count(i => i.Id == input.Id) > 1);
【讨论】:
【参考方案4】:var res = items.GroupBy(item => item.Id).Select(item2 => item2.First()).ToList();
【讨论】:
以上是关于c#如何在项目中声明一个静态的List对象?(给出思路即可)的主要内容,如果未能解决你的问题,请参考以下文章